1

アプリを開発していて、サイレントプッシュ通知を使用してデータを送信しています。アプリがアクティブなときにプッシュが正常に機能していますが、アプリをスワイプするか、アクティブでない場合、アプリはプッシュ通知を受信して​​いません。私は能力の下でバックグラウンドモードでのプッシュ通知を有効にしても、Info.plistのアプリが非アクティブのときにサイレント通知を受け取ることができませんiOS

これは私がプッシュと一緒に送付していますどのようなサンプルデータ

{ 
    "aps": { 
     "content-available": 1 
    }, 
    "yourdatakey":{data} 
} 

は私が修正するために何をすべきである、必要なバックグラウンドモードキーを追加しましたこの問題?.. iOSアプリは、非アクティブモードでサイレントプッシュ通知を受け取ることはできますか?

-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler 
{  
    if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) 
    { 
     NSLog(@"iOS version >= 10. Let NotificationCenter handle this one."); 
     return; 
    } 
    NSLog(@"HANDLE PUSH, didReceiveRemoteNotification: %@", userInfo); 

    if([UIApplication sharedApplication].applicationState == UIApplicationStateInactive) 
    { 
     NSLog(@"INACTIVE"); 
     completionHandler(UIBackgroundFetchResultNewData); 
    } 
    else if([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) 
    { 
     NSLog(@"BACKGROUND"); 
     completionHandler(UIBackgroundFetchResultNewData); 
    } 
    else 
    { 
     NSLog(@"FOREGROUND"); 
     completionHandler(UIBackgroundFetchResultNewData); 
    } 
} 

- (void)userNotificationCenter:(UNUserNotificationCenter *)center 
     willPresentNotification:(UNNotification *)notification 
     withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler 
{ 
    NSLog(@"Handle push from foreground"); 
} 

- (void)userNotificationCenter:(UNUserNotificationCenter *)center 
didReceiveNotificationResponse:(UNNotificationResponse *)response 
     withCompletionHandler:(void (^)())completionHandler 
{ 
    NSLog(@"Handle push from background or closed"); 
} 

プッシュは私のアプリでは重要な役割を果たしており、遅延を望んでいません。私にとって

{ 
     "to" : "<DEVICE_ID>", 
     "priority" : "high", 
     "content_available" : true, 
     "data" : { "custom_key":"custom value", "custom_key_2":"custom value 2" } 
} 

、この:私は??すぐにプッシュを受けるために...

+0

通知センターにバナーが表示されますか? –

答えて

0

私の知る限り伝えることができましたように、サイレントプッシュ通知はこのようになるはずです何をすべきアプリがフォアグラウンドまたはバックグラウンドにあるときにすぐに送信されます。しかし、アプリが非アクティブな場合、アプリが起動してもメッセージは処理されません。

私はメッセージに以下を追加した場合:

"notification" : { "body" : "Notification Text", "sound" : "chime.aiff" } 

をそれはアプリがアクティブでないときの通知領域にあるチャイム音と表示「通知テキストを」再生されますが、それでもにアプリを起動しませんメッセージのデータ部分を処理する。私はこれがおそらく設計によるものだと理解していますが、私はこのアプリを使用して、アプリが動作していない間に何かが得られていることを確認していました。

これは、あなたの質問の半分(すぐにプッシュ通知を取得するのに役立ちます)を助けるかもしれませんが、私はまだアプリケーションがアクティブではない間に動作するように努めています。

編集:ユーザーのアプリを力は、閉じた場合、それが表示されます(タスクマネージャからアップスワイプ)プッシュ通知が入って来たときに、Appleはアプリを起動無効にあなたがそれについてできることは何がありません。 Appleのマニュアルによれば、手動でアプリを再起動したり、端末を再起動しても、サイレントプッシュ通知からアプリを起動することは可能になりますが、そうは見当たりません。私は簡単な答えは「Appleが彼らを働かせることに決めたときに、iOSの静かなプッシュ通知が働いている」と思う。予想通りに動作するモバイルオペレーティングシステムが必要な場合は、ユーザーをAndroidに誘導する必要があります。

+0

私はこの問題を抱えていることを確認したいと思うし、他のものもそうであるように見える。https://forums.developer.apple.com/thread/36776 –

関連する問題