基于 alert 中数据的 iOS 推送通知警报消息

Posted

技术标签:

【中文标题】基于 alert 中数据的 iOS 推送通知警报消息【英文标题】:iOS push notification alert message based on data in alert 【发布时间】:2013-08-28 09:05:21 【问题描述】:

全部,

我正在发送带有字符串数据的推送通知。 示例:


    "aps": 
         "alert": "1,FriendsName,3,4,pink, green",
         "sound": "default"
    


    "aps": 
         "alert": "2,drinks, adress",
         "sound": "default"
    
 

现在,我希望警报中的消息根据字符串中的值显示文本。 所以(伪代码): 如果 "alert" 中的第一个字符 = 1 => "alert = @"来自 %@ 的颜色是 %@",friendsName,粉红色 如果 "alert" 中的第一个字符 = 2 => `"alert = @"Invite for %@ at %@", 饮料, 地址

这可能吗?如果是这样:如何?

【问题讨论】:

【参考方案1】:

不,这是不可能的。 ios 处理推送通知,您的应用程序不会影响通知的呈现方式。 iOS 只会显示您在通知中发送的内容。

但是你可以使用localization 来实现你想要的:

"alert" :  "loc-key" : "ALERT_FORMAT", "loc-args" : [ "FriendsName", "pink"] ,

ALERT_FORMAT 是您Localizable.strings 文件中的本地化文件:

"ALERT_FORMAT" = "Color from %@ is %@"

但是您必须更改服务器上的通知类型,因此您向其发送邀请的通知您将需要更改服务器上的通知。

所以你会发送这样的邀请:

"alert" :  "loc-key" : "ALERT_INVITE", "loc-args" : [ "drinks", "adress"] ,

ALERT_INVITE 是您的本地化 Localizable.strings 文件:

"ALERT_INVITE" = "Invite for %@ at %@"

所以推送通知的 JSON 应该如下所示:


    alert" : 
            "loc-key" : "ALERT_FORMAT",
            "loc-args" : [ "FriendsName", "pink"]
        

【讨论】:

嗨 Remmelt,感谢您的回复。我会试试这个。我应该在handleBackgroundNotification 中编码吗?如果我想要 2 个警报,我应该创建 ALERT_INVITE1 和 ALERT_INVITE2 我想? ? handleBackgroundNotification ?没听说过这个消息。但是您应该在服务器端进行,只需在您的应用程序中提供使用过的loc-keyLocalizable.strings 嗯..我找不到 Localizable.strings 文件...所以我添加了它并在项目中添加了本地化,但现在警报显示“loc-key”:“ALERT_FORMAT” , "loc-args" : [ "FriendsName", "pink"]。我不应该通过其他方法手动添加文件吗? 不只是Localizable.strings 应该可以解决问题,但请确保将其设置为您的应用程序的默认本地化。您应该为您的应用支持的每种语言添加本地化。我还添加了一个示例,说明 JSON 应该如何使本地化通知起作用。 hmm .. 也许我没有在 php 中创建正确的 json ......也许它将“loc-key”和“loc-args”视为 1 个字符串,因此它显示为消息...我会调查的

以上是关于基于 alert 中数据的 iOS 推送通知警报消息的主要内容,如果未能解决你的问题,请参考以下文章

在 console.log 或警报中显示 firebase 推送通知?

iOS 推送通知本地化

Apple 推送通知 - 收到 1 条消息,但收到 2 条以上警报

IBM Worklight:iOS 推送通知长度限制

IOS 推送通知 - 如何指定通知声音

延迟显示推送通知警报