2016-04-04 15 views
0

私は、私のウェブスペースからPHPのプッシュ通知を介して私の迅速な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フラグで示されています)

関連する問題