Don*_*yck 2 iphone cocoa-touch push-notification devicetoken ios
在我的应用程序中,对于第一次推送通知注册,我didRegisterForRemoteNotificationsWithDeviceToken在持久性中调用并保存设备令牌,以及更新设备令牌的服务器列表.之后如果有人从iPhone设置中关闭推送通知设置,我如何从我的应用程序中确定它,以便我也可以从服务器中删除设备令牌.我知道APNS提供了一个反馈列表,但除此之外是否有办法以编程方式在App中确定它?谢谢你的帮助!
我相信你不想以这种方式管理令牌.
您的应用应始终要求Apple提供APN令牌.然后,您应始终将该令牌发送到您自己的服务器,可能会将令牌与您的用户关联(如果您有).这样做是因为令牌可能会更改,因此您需要确保始终拥有最新的令牌.
反馈服务会告诉您(实际上,您在选择的某个时间间隔内轮询它)哪些令牌已变为无效.此时,您从服务器端数据库中删除令牌.需要说明的是,您需要一个服务器端进程来轮询Apple的反馈服务,然后更新服务器端数据库.
在尝试使用令牌发送通知之前,您不会收到有关无效令牌的反馈.Apple发送时会通知(我相信)该通知,但当Apple发现它是无效令牌时,该消息将被删除,并且令牌会添加到您的反馈中.
现在,如果您的应用的用户在您的应用首次询问时接受推送通知,但稍后会通过应用的"设置"应用关闭通知,则您将无法获得有关该应用的任何反馈.我所知道的是,您发送给该设备的任何通知都将发送到该设备,但操作系统会将其删除,以便在应用和通知的"设置"应用中尊重用户的最终选择.
最后,您可以在应用中调用一个API,以获取在设备上为您的应用启用了哪些类型的通知的位掩码.这是我为此目的而写的一种方法; 根据需要调整:
+(BOOL)acceptsPushNotifications
{
UIRemoteNotificationType mask = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
return (mask & UIRemoteNotificationTypeAlert) == UIRemoteNotificationTypeAlert;
}
Run Code Online (Sandbox Code Playgroud)
但我不建议使用它来决定你的应用程序是否应该告诉你的服务器从数据库中删除令牌.这不是整个APN系统的工作方式......我相信.
| 归档时间: |
|
| 查看次数: |
1925 次 |
| 最近记录: |