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)从网页端,我已经将“内容可用”添加为 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借助任何网络服务来处理它。

于 2016-12-21T06:46:36.900 回答