在iPhone上确定用户是否启用了推送通知

我正在寻找一种方法来确定用户是否通过设置启用或禁用了我的应用程序的推送通知。


调用enabledRemoteNotificationsTypes并检查掩码。

例如:

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) 
   // blah blah blah

iOS8及以上版本:

[[UIApplication sharedApplication] isRegisteredForRemoteNotifications]

我不能评论(没有足够的声望),但重新:quantumpotato的问题:

types由哪里给出

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

可以使用

if (types & UIRemoteNotificationTypeAlert)

代替

if (types == UIRemoteNotificationTypeNone) 

将允许您仅检查是否启用通知(并且不必担心声音,徽章,通知中心等)。 如果“Alert Style”设置为“Banners”或“Alerts”,则第一行代码( types & UIRemoteNotificationTypeAlert )将返回YES ,如果“Alert Style”设置为“None”则返回NO ,而不管其他设置如何。


在iOS的最新版本中,此方法现在已被弃用。 要同时支持iOS 7和iOS 8,请使用:

UIApplication *application = [UIApplication sharedApplication];

BOOL enabled;

// Try to use the newer isRegisteredForRemoteNotifications otherwise use the enabledRemoteNotificationTypes.
if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
    enabled = [application isRegisteredForRemoteNotifications];
}
else
{
    UIRemoteNotificationType types = [application enabledRemoteNotificationTypes];
    enabled = types & UIRemoteNotificationTypeAlert;
}
链接地址: http://www.djcxy.com/p/72645.html

上一篇: Determine on iPhone if user has enabled push notifications

下一篇: what is use of &(AND) operator in C language?