【发布时间】:2014-04-13 04:54:54
【问题描述】:
我正在尝试发送没有“警报”属性的 json 格式。问题是,当我尝试删除警报属性时,通知不会出现。有什么办法可以处理这个吗?提前致谢
P.S 我尝试过使用动作,但它仍然没有出现(我认为这只有在 android 中才有可能)
【问题讨论】:
-
请解释否决票
标签: ios json parse-platform
我正在尝试发送没有“警报”属性的 json 格式。问题是,当我尝试删除警报属性时,通知不会出现。有什么办法可以处理这个吗?提前致谢
P.S 我尝试过使用动作,但它仍然没有出现(我认为这只有在 android 中才有可能)
【问题讨论】:
标签: ios json parse-platform
是的,你可以做到。可以在没有警报的情况下发送推送通知。您甚至可以将您的应用程序注册为标记通知,在这种情况下,提供程序服务器甚至无法发送警报或声音。
通知负载
每个推送通知都带有一个有效负载。有效负载指定如何提醒用户注意等待下载到客户端应用程序的数据。通知有效负载允许的最大大小为 256 字节; Apple Push Notification Service 拒绝任何超过此限制的通知。请记住,通知的传递是“尽力而为”,不能保证。
对于每个通知,提供者必须编写一个严格遵守 RFC 4627 的 JSON 字典对象。该字典必须包含另一个由键 aps 标识的字典。 aps 字典包含一个或多个指定以下操作的属性:
向用户显示的警告消息
用于标记应用程序图标的数字
要播放的声音
请注意,它表示一个或多个属性。 alert 属性是可选的。您甚至可以使用空的 aps 字典发送通知(即仅发送自定义属性)。
以下示例显示了一个空的 aps 字典;因为缺少徽章属性,所以应用程序图标上显示的任何当前徽章编号都将被删除。 acme2 自定义属性是一个由两个整数组成的数组。
{
"aps" : {
},
"acme2" : [ 5, 8 ]
}
用户将看到的唯一警报是询问他/她是否允许推送通知的警报。只有在安装后首次启动应用程序时才会显示该警报。
在下面的示例中,您注册到非警报通知(仅限徽章和声音):
注册远程通知
- (void)applicationDidFinishLaunching:(UIApplication *)app {
// other setup tasks here....
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
// Delegation methods
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
const void *devTokenBytes = [devToken bytes];
self.registered = YES;
[self sendProviderDeviceToken:devTokenBytes]; // custom method
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSLog(@"Error in registration. Error: %@", err);
}
希望这会对你有所帮助。
【讨论】: