你可以做到这一点。
可以在没有警报的情况下发送推送通知。
甚至可以注册你的应用程序只用于徽章通知,在这种情况下,提供者服务器甚至无法发送警报或声音。
“通知有效载荷”
每个推送通知都携带有一个有效载荷。有效载荷指定了如何向用户发出警报以下载到客户端应用程序中等待的数据。通知有效载荷允许的最大大小为256个字节;苹果推送通知服务拒绝超过此限制的任何通知。请记住,通知的传递是“尽力而为”,不能保证。
对于每个通知,提供者必须组成一个严格遵守RFC 4627的JSON字典对象。该字典必须包含由键aps标识的另一个字典。aps字典包含一个或多个属性,指定以下操作:
向用户显示的警报消息
要徽章应用程序图标的数字
要播放的声音
请注意,它说“一个或多个属性”。警报属性是可选的。你甚至可以发送一个只包含自定义属性的空aps字典的通知。
示例5。以下示例显示一个空的aps字典;因为缺少徽章属性,所以应用程序图标上显示的任何当前徽章号码都将被移除。acme2自定义属性是两个整数的数组。
{
"aps" : {
},
"acme2" : [ 5, 8 ]
}
用户唯一会看到的警报是询问他/她是否允许推送通知的警报。该警报仅在安装后首次启动应用程序时显示。
在此示例中,您注册了非警报通知(仅限徽章和声音):
Listing 2-3 Registering for remote notifications
- (void)applicationDidFinishLaunching:(UIApplication *)app {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
const void *devTokenBytes = [devToken bytes];
self.registered = YES;
[self sendProviderDeviceToken:devTokenBytes];
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSLog(@"Error in registration. Error: %@", err);
}
所有引用均来自苹果本地和推送通知编程指南。