是的,堆栈中也有类似的问题,到目前为止,我没有从这些问题中找到任何适当的并发答案。
当我收到静音推送通知时,如何下载任何数据或调用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>
希望你能从你的答案中得到新的希望。
问候。
答案 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
处理它。