如果在 JSON 中通知“aps”,iOS 推送通知将不起作用
Posted
技术标签:
【中文标题】如果在 JSON 中通知“aps”,iOS 推送通知将不起作用【英文标题】:iOS push notifications doesn't work if "aps" informed in JSON 【发布时间】:2015-05-05 09:23:59 【问题描述】:如果我关闭了我的应用并发送这样的推送通知:
"alert" : "Hello, world!",
"sound" : "default"
我的应用正确接收推送通知。但如果我发送这个:
"aps" :
"alert" : "Hello, world!",
"sound" : "default"
我的应用从不显示通知。
如果我的应用已打开,我在委托 didReceiveRemoteNotification userInfo: [NSObject : AnyObject]
中正确收到了最后一条通知
为什么 ios 8 不解析最后一条通知并将其显示为通知?
【问题讨论】:
【参考方案1】:如果没有实际发送通知的代码,则完全不清楚问题出在哪里,因为如果您使用一些库或包装器,它可能会添加aps
条目本身。现在,您应该像第一个示例一样继续发送通知,您还将在didReceiveRemoteNotification userInfo: [NSObject : AnyObject]
中获得通知
【讨论】:
问题在于第三方服务。他们在 JSON 推送通知中添加“aps:”。非常感谢【参考方案2】:对于目标 C。 看看你是否正确接收了 Json。对于第一个选项,您使用过我认为这样的代码
(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification
这将收到您拥有的字典。但是第二个选项你已经发送了一个数组,它的第一个索引有一个字典所以用 NSArray 替换 NSDictionary 然后接收数组
第一个索引和检索这样的字典
(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSArray *)notification
......
对于 Swift 这段代码对我有用。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
println("Push Received")
println(userInfo)
println(userInfo["aps"])
var state: UIApplicationState = application.applicationState
if state == UIApplicationState.Active
println(userInfo)
println(userInfo["aps"])
var alert2 = UIAlertController(title: "Push", message: "Received", preferredStyle: UIAlertControllerStyle.Alert)
alert2.addAction(UIAlertAction(title: "Ok", style: .Default, handler: action in
))
【讨论】:
以上是关于如果在 JSON 中通知“aps”,iOS 推送通知将不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如果我有免费的 iOS 开发人员配置文件,如何调试“推送通知”?