好的,所以我阅读了有关如何在didfinishlaunchingwith选项中检查本地通知的各种文章。例如,这篇NSHipster文章声称远程和本地密钥都包含NSDictionary。 http://nshipster.com/launch-options/
然而,我测试过并且它包含了UILocalNotification,其他一些文章也是如此。
所以,我环顾四周但没有找到任何确定的答案。这是操作系统版本问题吗?不同的版本是否包含不同的对象,或者是什么?
指针非常感谢。
编辑:
来自NSHipster的文章:
“本地通知填充UIApplicationLaunchOptionsLocalNotificationKey上的启动选项,其中包含与远程通知具有相同结构的有效负载:
UIApplicationLaunchOptionsLocalNotificationKey:表示应用程序可以处理本地通知。此键的值是包含本地通知的有效负载的NSDictionary。“
答案 0 :(得分:2)
根据Apple Documentation,UIApplicationLaunchOptionsLocalNotificationKey将为您提供 UILocalNotification 对象。
如果点击默认操作按钮(在运行iOS的设备上),则 系统启动应用程序,应用程序调用其代理人 application:didFinishLaunchingWithOptions:方法,传入 通知有效载荷(用于远程通知)或 本地通知对象(用于本地通知)。虽然 application:didFinishLaunchingWithOptions:不是最好的地方 处理通知,此时获取有效负载给你 在处理程序方法之前启动更新过程的机会 被称为。
Apple Docs的示例代码
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UILocalNotification *localNotif =
[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotif) {
NSString *itemName = [localNotif.userInfo objectForKey:ToDoItemKey];
[viewController displayItem:itemName]; // custom method
app.applicationIconBadgeNumber = localNotif.applicationIconBadgeNumber-1;
}
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
修改: UIApplicationLaunchOptionsRemoteNotificationKey
UIApplicationLaunchOptionsRemoteNotificationKey
,使用notification payload
也来自苹果医生
此键的值是已触发的UILocalNotification对象。有关处理本地通知的其他信息,请参阅应用程序:didReceiveLocalNotification:method。
apple-doc-UIApplicationLaunchOptionsLocalNotificationKey
注意:此键自iOS10.0以后已弃用
答案 1 :(得分:2)
didFinishLaunchingWithOptions:
中的Options参数是一个字典,根据UIApplicationDelegate,UILocalNotification
可以包含UIApplicationLaunchOptionsLocalNotificationKey
作为键NSDictionary
的值。
这与远程通知不同,远程通知是包含有效负载的UIApplicationLaunchOptionsRemoteNotificationKey
,可以使用UIApplicationLaunchOptionsRemoteNotificationKey
密钥获取。
UIApplicationLaunchOptionsLocalNotificationKey
此键的存在表示可以让应用程序处理远程通知。此键的值是包含远程通知的有效负载的NSDictionary。有关处理远程通知的详细信息,请参阅application:didReceiveRemoteNotification的说明。
PlayGamesPlatform.Instance.Authenticate(success => { if (success) { Debug.Log("Token :"); Debug.LogFormat("{0}", PlayGamesPlatform.Instance.GetAccessToken()); Debug.Log("End Of Token"); } });
此密钥的存在表示可以让应用程序处理本地通知。此键的值是已触发的UILocalNotification对象。有关处理本地通知的其他信息,请参阅应用程序:didReceiveLocalNotification:method。