当应用程序处于 InActive 模式时如何处理静默推送通知?在 Objective C

How handle silent pushnotification when application is on InActive mode? In Objective C

是的,堆栈中也有类似的问题,到目前为止,我没有从这些问题中找到任何合适的并发答案。

当我收到静默推送通知时,如何下载任何数据或调用 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) 在网页端,我已经将 "content-available" 添加为 1。
2) 我已经在 Plist 中添加了下面的键。

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

希望我能从你的回答中得到新的希望。

此致。

如果您的应用处于非活动模式,您将无法处理任何类型的远程或本地通知。当出现任何其他应用程序(如呼叫、消息或任何其他应用程序)时,应用程序将变为非活动状态。

如果你想做一些必要的事情,你可以在 applicationDidBecomeActive 中借助任何网络服务来处理它。

你处理的方式不对。

如果您的应用处于 InActive 状态,

"didReceiveRemoteNotification" 不会被调用。

在 'AppDelegate' 中的 "didFinishLaunchingWithOptions" 方法中使用以下代码来处理此状态。

//Handling PUSH NOtIFICATIONs when app is killed

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

if (pushDic)
{
    [self callWebService];
}