1

我正在使用 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 设备上获取类别。

4

1 回答 1

0

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

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

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);        
}

检查此答案以获取更多信息。

希望这有帮助;)

于 2017-04-28T03:13:07.350 回答