iOS 如果 "aps" 在 JSON 中通知,则推送通知不起作用
iOS push notifications doesn't work if "aps" informed in JSON
如果我关闭了我的应用程序并发送了这样的推送通知:
{
"alert" : "Hello, world!",
"sound" : "default"
}
我的应用程序正确接收推送通知。但是如果我发送这个:
{
"aps" : {
"alert" : "Hello, world!",
"sound" : "default"
}
}
我的应用程序从不显示通知。
如果我的应用程序打开,我会在委托中正确收到最后一条通知 didReceiveRemoteNotification userInfo: [NSObject : AnyObject]
为什么 iOS 8 不解析最后一条通知并将其显示为通知?
如果没有实际发送通知的代码,则完全不清楚问题出在哪里,因为如果您使用某些库或包装器,它可能会添加 aps
条目本身。现在,您应该像第一个示例一样继续发送通知,您还将在 didReceiveRemoteNotification userInfo: [NSObject : AnyObject]
中收到它们
对于Objective 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
}))
}
如果我关闭了我的应用程序并发送了这样的推送通知:
{
"alert" : "Hello, world!",
"sound" : "default"
}
我的应用程序正确接收推送通知。但是如果我发送这个:
{
"aps" : {
"alert" : "Hello, world!",
"sound" : "default"
}
}
我的应用程序从不显示通知。
如果我的应用程序打开,我会在委托中正确收到最后一条通知 didReceiveRemoteNotification userInfo: [NSObject : AnyObject]
为什么 iOS 8 不解析最后一条通知并将其显示为通知?
如果没有实际发送通知的代码,则完全不清楚问题出在哪里,因为如果您使用某些库或包装器,它可能会添加 aps
条目本身。现在,您应该像第一个示例一样继续发送通知,您还将在 didReceiveRemoteNotification userInfo: [NSObject : AnyObject]
对于Objective 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
}))
}