2016-04-04 179 views
0

我通過PHP推送通知從我的webspace發送到我的swift 2應用程序。 我這樣做,這是:無聲推送通知與正常推送通知

$body['aps'] = array('alert' => 'HELLO', 'badge' => 1, 'sound' => 'default'); 

現在我想用無聲推送通知到工作​​了。 我瞭解到,我可以送沉默推這樣的:接收無聲推後

$body['aps'] = array('content-available' => 1); 

而在我的應用程序委託我做一些事情。

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) { 

    print("DO SOMETHING IN THE BACKGROUND") 

    handler(UIBackgroundFetchResult.NewData) 
    } 
    return 
} 

這工作正常。 但現在的問題是,如果我發送正常推送,每次都會發送此打印件。

這是不正確的。只有在收到無聲推送時,才能執行「在背景中做某事」的打印。

我在做什麼錯?

+1

你可以檢查通知的有效載荷,看看它的內容可用性等於1. –

+0

謝謝:)類似的東西我試過幾分鐘 – Stack108

回答

0

修改代碼以下列方式:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) { 

    if let apsValue = userInfo["aps"] as? NSDictionary { 
     if (apsValue["content-available"] as? Int == 1){ 
      print("DO SOMETHING IN THE BACKGROUND") 
      handler(UIBackgroundFetchResult.NewData) 
     } 

    } 
return 
} 

現在您的操作項正在執行的每一個時間,但上面的代碼會過濾出來,所以它僅當有一個沉默的推動執行(正如你所知,由內容可用= 1標誌表示)。