NSDictionary 在推送通知中返回空字符串

Posted

技术标签:

【中文标题】NSDictionary 在推送通知中返回空字符串【英文标题】:NSDictionary returning me empty string in push notification 【发布时间】:2016-07-19 21:39:37 【问题描述】:

这是我的有效载荷


    aps =     
        ImageURL = "http://i.forbesimg.com/media/lists/people/cristiano-ronaldo_416x416.jpg";
        alert = testing;
    ;

这是我的代码

NSDictionary *aps = [[NSDictionary alloc] initWithDictionary:[launchOptions objectForKey:@"aps"]];
NSString *text = [aps objectForKey:@"alert"];
NSString *imageUrl = [aps objectForKey:@"ImageURL"];

此代码在 didRecievePushNotification 中有效,但在 didFinishLaunching 中无效

【问题讨论】:

你确定你的 launchOptions 字典在从这两种方法调用时是一样的吗?尝试记录 launchOptions 并比较输出。 实际上是在我杀死应用程序并发送推送通知时的问题,当时没有调试器 【参考方案1】:

该代码应该可以工作,尽管它过于复杂且效率低下。没有理由使用您的 launchOptions 字典的内容创建新字典。

简单地说

NSString *text = ((NSDictionary*)launchOptions[@"aps"])[@"alert"];
NSString *imageURL = ((NSDictionary*)launchOptions[@"aps"])[@"ImageURL"];

或者

NSDictionary *aps = (NSDictionary*)launchOptions[@"aps"];
NSString *text = aps[@"alert"];
NSString *imageURL = aps[@["ImageURL"];

【讨论】:

请注意,在上面的第二个选项中,我没有分配/初始化新字典;我只是提取键“aps”的值并将其转换为正确的类型。 所以记录launchOptionsfpstextimageURL

以上是关于NSDictionary 在推送通知中返回空字符串的主要内容,如果未能解决你的问题,请参考以下文章

无法在 iOS 中解析推送通知 json?

在后台推送通知

xcode 9 xcodebuild 开启钥匙串共享和推送通知

推送通知的跳转

每次到达时如何在推送通知中计算徽章值?

从 Apple 推送通知中解析数据