我需要时刻了解用户在推送通知设置中选择的选项。
(选项为 - 警报,声音和徽章)
所以,当我的应用程序启动我打电话:
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
并检测用户选择的内容。
但是,如何检测,如果用户在应用程序生命周期后更改设置?
有一些,当与此设置的变化发生被调用的委托方法?
我需要时刻了解用户在推送通知设置中选择的选项。
(选项为 - 警报,声音和徽章)
所以,当我的应用程序启动我打电话:
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
并检测用户选择的内容。
但是,如何检测,如果用户在应用程序生命周期后更改设置?
有一些,当与此设置的变化发生被调用的委托方法?
没有委托。 您需要查询UIApplication
财产enabledRemoteNotificationTypes
周期性,例如在applicationDidBecomeActive:
有关详细信息检查这些问题的答案:
确定iPhone,如果用户已启用推送通知
查看在锁屏和enabledRemoteNotificationTypes - iOS5的
编辑:
如果您需要重置推送通知设置和权限警报,看看在苹果公司的技术说明TN2265 。 在部分“重置推送通知警报的权限在iOS上”,他们解释如何重置iOS上的设置。 然而,许多开发商抱怨程序不起作用。 不知道这个链接将工作,你需要有机会获得苹果论坛,但它是关于这个确切问题一个线程。
我自己想,如果苹果公司可能已删除的权限对话框中的iOS 5.1。 否则,为什么他们会要求应用程序显示警报? 据AppStore的审查指南 :
5.3应用程序是发送推送通知未征得用户同意,将被拒绝
例如路径(应用程序)要求用户选择将其推送通知在唱行动进程的中间,而不是在应用程序启动首次。
不知道应该是什么提示的目的,反正作为应用程序无法查询该通知设定的状态。 特别地,该应用程序可以检查哪个通知类型(使用enabledRemoteNotificationTypes
)被启用但如果对于特定应用推送通知(在顶部的通知中心ON / OFF开关)启用或禁用。 至少,这是iOS中5.1的行为。 即使用户禁用该应用通知时,应用程序仍可以注册推送通知(使用registerForRemoteNotificationTypes
),并将收到的APNS令牌。
检查它,当你的应用程序变得活跃,而不仅仅是在发射升空。
这是当推通过UrbanAirship实施的示例。 每次当用户选择/退出的推动下委托火灾与方法低于此您可以检查(是/否)。
同样可以用委托的UIApplication如果不使用UrbanAirship实现。
- (void)registrationSucceededForChannelID:(NSString )channelID deviceToken:(NSString )deviceToken
{
NSLog(@"registrationSucceededForChannelID : %@",[self appRegisterForPushNotification]?@"YES":@"NO");
}
- (BOOL)appRegisterForPushNotification {
if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {
UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
return ((types & UIUserNotificationTypeAlert) || (types & UIUserNotificationTypeSound));
}
return NO;
}