远程通知类别未发送到客户端设备?

Posted

技术标签:

【中文标题】远程通知类别未发送到客户端设备?【英文标题】:Remote notification category not being sent to client device? 【发布时间】:2017-01-29 02:48:55 【问题描述】:

我正在使用 Amazon SNS 为我的 ios 应用程序提供远程通知,但我在客户端设备上收到通知类别时遇到了问题。

以下是我使用 SNS 从服务器发布通知的方式:

@client = Aws::SNS::Client.new(...)

resp = @client.publish(
    target_arn: endpoint_arn,
    message: 
        default: body,
        APNS: 
            aps: 
                alert: 
                    title: title,
                    body: body
                ,
                category: category
            
        
    .to_json,
    subject: title,
    message_structure: "json"
)

在 iOS 设备上,我在应用委托中收到通知:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    NSDictionary<NSString *, id> * aps = [userInfo objectForKey:@"aps"];
    if (aps) 
        NSString * category = [aps objectForKey:@"category"];
        NSLog(@"Category is: %@", category); // Category is: nil
     else 
        NSLog(@"APS dictionary nil");
    

问题是类别总是零。我尝试了 aps 对象的几种不同结构,但似乎无法在 iOS 设备上获取类别。

【问题讨论】:

【参考方案1】:

有点晚了,但可能会帮助其他人。

尝试发送与aps 相同级别的category 属性,如下所示:

resp = @client.publish(
    target_arn: endpoint_arn,
    message: 
        default: body,
        APNS: 
            aps: 
                alert: 
                    title: title,
                    body: body
                
            ,
            category: category
        
    .to_json,
    subject: title,
    message_structure: "json"
)

并通过

获得响应
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    NSString * category = [userInfo objectForKey:@"category"];
    NSLog(@"Category is: %@", category);        

查看this answer了解更多信息。

希望对您有所帮助;)

【讨论】:

以上是关于远程通知类别未发送到客户端设备?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中注册远程通知时未收到设备令牌

处于“未运行”状态的远程通知

手机重启后远程通知未发送到我的应用程序

未运行状态下的远程通知处理

Xamarin Forms iOS 远程通知不显示

多个类别名称未显示通知内容扩展?