2016-11-15 17 views
0

に私は次の様々な組み合わせを試してみたではない:GCMの背景通知はAndroidで機能します。 iOSの

  • APSペイロード
  • APSペイロード
  • content_availableに渡された空の音に渡された空の警告:真
  • コンテンツ - 利用可能:1

優先度を高く設定します。 ターゲット機能のバックグラウンドモードでバックグラウンドフェッチとリモート通知が有効になっています。私はなく、バックグラウンドでアプリを開くと通知が来るとすぐに

JsonObject jGcmData = new JsonObject(); 
jGcmData.addProperty("to", "/topics/global"); 
jGcmData.addProperty("priority", "high"); 

JsonObject jData = new JsonObject(); 
jData.addProperty("id", nObj.id); 
jData.addProperty("title", nObj.title); 
jData.addProperty("body", nObj.body); 

JsonObject apsData = new JsonObject(); 
apsData.addProperty("content-available", "1"); 
apsData.addProperty("alert", ""); 

jGcmData.add("aps", apsData); 
jGcmData.add("data", jData); 

は、これは私のようなペイロードが見えるものです。

それは次のようになります。

[AnyHashable( "身体"):NTCIP例単位:今WALNUT TREE (火11月15日午後02時01分30秒EST 2016)、AnyHashable( "ID" を示します):idhere、 AnyHashable( "collapse_keyが"):do_not_collapse、AnyHashable() "から": /トピック/グローバル、AnyHashable( "タイトル"):メッセージの変更の通知]

のための私AppDelegate機能受信時にフォアグラウンドとバックグラウンドの通知:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler handler: @escaping (UIBackgroundFetchResult) -> Void) { 
     print("background notification received: \(userInfo)") 
     GCMService.sharedInstance().appDidReceiveMessage(userInfo); 
     NotificationCenter.default.post(name: NSNotification.Name(rawValue: messageKey), object: nil, userInfo: userInfo) 
     handler(UIBackgroundFetchResult.noData); 
    } 

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { 
     print("foreground notification received: \(userInfo)") 
     GCMService.sharedInstance().appDidReceiveMessage(userInfo); 
     NotificationCenter.default.post(name: NSNotification.Name(rawValue: messageKey), object: nil, userInfo: userInfo) 
    } 

アプリケーション(didReceiveRemoteNotification ::: fetchCompletionHandler)が呼び出されることはありません。

助けてください!

+0

@Essenceofchickensアプリがまだ開発中で、通知で開発証明書が使用されているiOSデバイスで、フォアグラウンド通知が問題なく表示されます。フォアグラウンドとバックグラウンドの両方の通知は、Android搭載端末で表示されます。私はiOSデバイスのバックグラウンド通知を受け取っていないだけです。 –

答えて

0

私はjGcmData.add( "notification"、jData)が必要です。 jGcmData.add( "data"、jData)の代わりに。 APNSがバックグラウンド通知を処理します。その変更を行うアプリケーション(didReceiveRemoteNotification ::: fetchCompletionHandler)が呼び出され、ペイロードの処理方法を変更する以外に、私のバックグラウンド通知の問題が解決されたと思います!

(私はこの解像度がまもなく追加されます見つける助けSOの質問へのリンク!)

明確にする: GCMは、通知またはデータとしてペイロードの説明を受け入れ APNSは、それがバックグラウンドの通知であることを期待通知

+0

http://stackoverflow.com/questions/31109514/making-gcm-work-for-ios-device-in-the-background –

+0

こんにちは。あなたの投稿が適切にタグ付けされるようにこれを正しい答えとして受け入れます。乾杯! –

関連する問題