launchOptions'UIApplicationLaunchOptionsLocalNotificationKey'是否包含NSDictionary或UILocalNotification

时间:2016-01-27 09:58:53

标签: ios objective-c iphone notifications uilocalnotification

好的,所以我阅读了有关如何在didfinishlaunchingwith选项中检查本地通知的各种文章。例如,这篇NSHipster文章声称远程和本地密钥都包含NSDictionary。 http://nshipster.com/launch-options/

然而,我测试过并且它包含了UILocalNotification,其他一些文章也是如此。

所以,我环顾四周但没有找到任何确定的答案。这是操作系统版本问题吗?不同的版本是否包含不同的对象,或者是什么?

指针非常感谢。

编辑:

来自NSHipster的文章:

“本地通知填充UIApplicationLaunchOptionsLocalNotificationKey上的启动选项,其中包含与远程通知具有相同结构的有效负载:

UIApplicationLaunchOptionsLocalNotificationKey:表示应用程序可以处理本地通知。此键的值是包含本地通知的有效负载的NSDictionary。“

2 个答案:

答案 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

返回NSDictionary

也来自苹果医生

  

此键的值是已触发的UILocalNotification对象。有关处理本地通知的其他信息,请参阅应用程序:didReceiveLocalNotification:method。

apple-doc-UIApplicationLaunchOptionsLocalNotificationKey

注意:此键自iOS10.0以后已弃用

答案 1 :(得分:2)

didFinishLaunchingWithOptions:中的Options参数是一个字典,根据UIApplicationDelegateUILocalNotification可以包含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。