Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios APNS不';单击图标后,不要调用didReceiveRemoteNotification_Ios_Apple Push Notifications_Apns Php - Fatal编程技术网

Ios APNS不';单击图标后,不要调用didReceiveRemoteNotification

Ios APNS不';单击图标后,不要调用didReceiveRemoteNotification,ios,apple-push-notifications,apns-php,Ios,Apple Push Notifications,Apns Php,我试图将下面的负载从PHP服务器传递到APNS $body['aps'] = array( 'badge' => 1, 'ArmyGroupID' => 12345 ); 虽然应用程序在前台,我得到了整个字典,这是没有问题的 问题: 但是当应用程序在后台时,它成功地附加了徽章, 但是,当我点击图标时,消息并没有发送到DidReceiveMemoteNotification 我这样做对吗 这是预期的行为。请参阅苹果文档中的以下片段: 作为显示的通知的结

我试图将下面的负载从PHP服务器传递到APNS

$body['aps'] = array(
        'badge' => 1,
        'ArmyGroupID' => 12345
);
虽然应用程序在前台,我得到了整个字典,这是没有问题的

问题:

但是当应用程序在后台时,它成功地附加了徽章, 但是,当我点击图标时,消息并没有发送到DidReceiveMemoteNotification


我这样做对吗

这是预期的行为。请参阅苹果文档中的以下片段:

作为显示的通知的结果,用户轻触警报的操作按钮或轻触(或单击)应用程序图标。 如果点击操作按钮(在运行iOS的设备上),系统将启动应用程序,应用程序将调用其代理的应用程序:didFinishLaunchingWithOptions:method(如果已实现);它传入通知负载(用于远程通知)或本地通知对象(用于本地通知)。 如果在运行iOS的设备上点击应用程序图标,应用程序将调用相同的方法,但不提供有关通知的信息。如果在运行OS X的计算机上单击应用程序图标,应用程序将调用代理的ApplicationIDFinishLaunching:方法,在该方法中,代理可以获取远程通知负载

作为一种解决方法,我建议您使用以下选项检查DidFinishLaunching:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Get user info dict
    NSDictionary* userInfo = [launchOptions   valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
    if([UIApplication sharedApplication].applicationIconBadgeNumber >0 && userInfo == nil){
        //Do like you did in didRecieveRemoteNotification method
    }
    return YES;
}
在swift2中:

func应用程序(应用程序:UIApplication,DidReceiveMemoteNotification用户信息:[NSObject:AnyObject],fetchCompletionHandler completionHandler:(UIBackgroundFetchResult)->Void){

}
您实际上想要检查
userInfo!=无
。我还建议使用
ui应用程序aunchoptionsremotenotificationkey
常量,而不是容易出错的静态字符串。我同意常量,但不同意用户信息检查。问题是,他单击图标,当点击图标时,userInfo为零。如果点击推送通知警报,则userInfo不是零。不是真的。他说没有调用
didReceiveMotonification
,这就是为什么还应该在
didFinishLaunchingWithOptions
中搜索通知的原因,正如您所指出的。无论如何,您将如何处理零通知?