当应用程序处于InActive模式时,如何处理静默推送?目标C

时间:2016-12-21 06:13:07

标签: ios objective-c push-notification silentpush

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

当我收到静音推送通知时,如何下载任何数据或调用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>

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

问候。

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

如果您的应用处于非活动模式,则无法处理任何类型的远程或本地通知。当其他任何内容出现如Call,Message或其他任何内容时,应用程序将移至INACTIVE。

如果您想做一些需要的事情,可以在任何网络服务的帮助下在applicationDidBecomeActive处理它。