2

はい、スタックには同様の質問もあります。これまでのところ、これらの質問から適切な同時回答が見つかりませんでした。

サイレントプッシュ通知を受信したときに、データをダウンロードしたり、web-api を呼び出したりするにはどうすればよいですか?

私のコードは以下の通りです..

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
 {

     NSDictionary *dicAPS = [userInfo objectForKey:@"aps"];

     if(application.applicationState == UIApplicationStateBackground) {

        // This is working..
        [self callWebService];
     }
     else if(application.applicationState == UIApplicationStateInactive)
     {
        // This is not working..
        [self callWebService];
     }
     else
     {
        // This is working..
        //Show an in-app banner
     }
}

注:
1)Web側から、「コンテンツ利用可能」を1として
追加しました。2)Plistのキーの下に既に追加しました。

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

うまくいけば、あなたの答えから新しい希望が得られます。

よろしく。

4

2 に答える 2

1

あなたはそれを間違った方法で扱っています。

アプリが InActive 状態の場合、「didReceiveRemoteNotification」は呼び出されません。

この状態を処理するには、「AppDelegate」の「didFinishLaunchingWithOptions」メソッドで次のコードを使用します。

//Handling PUSH NOtIFICATIONs when app is killed

NSDictionary *pushDic = [[NSDictionary alloc]init];
pushDic = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];

if (pushDic)
{
    [self callWebService];
}
于 2016-12-21T07:39:31.583 に答える
0

アプリが INACTIVE モードの場合、いかなる種類のリモートまたはローカル通知も処理できません。通話、メッセージなどの他の画像が表示されると、アプリは非アクティブに移動します。

何か必要なことをしたい場合はapplicationDidBecomeActive、任意の Web サービスの助けを借りて処理できます。

于 2016-12-21T06:46:36.900 に答える