【问题标题】:Alert user to enable notifications from settings in ios提醒用户启用 ios 设置中的通知
【发布时间】:2015-12-14 05:54:08
【问题描述】:

嗨,在我的应用程序中,我有通知部分,用户可以使用开关启用通知。首次启动后,当用户在开关上时,我从 ios 获得不允许或确定警报视图。如果用户选择不允许并切换将关闭,用户将不会收到通知。现在,如果用户尝试打开开关,我想向用户显示带有文本“请启用设置中的通知”的警报。任何人都可以建议这样做的方法。

【问题讨论】:

    标签: ios objective-c push-notification uialertview


    【解决方案1】:

    对于UILocalNotification 权限,请检查以下内容,types 参数值将是 none 如果用户不允许它。

    [[UIApplication sharedApplication] currentUserNotificationSettings]
    

    【讨论】:

      【解决方案2】:

      您可以使用isRegisteredForRemoteNotifications方法检查权限。

      - (void)checkForNotificationPermission
      {
          if (!([[UIApplication sharedApplication] isRegisteredForRemoteNotifications] && [self pushNotificationsEnabled])) 
          {
             // Show alert here
          }
      }
      
      
      // For fixing iOS 8 issue mentioned here http://stackoverflow.com/a/28441181/1104384
      - (BOOL)pushNotificationsEnabled
      {
          if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)])
          {
              UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
              return (types & UIUserNotificationTypeAlert);
          }
          else
          {
              UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
              return (types & UIRemoteNotificationTypeAlert);
          }
      }
      

      【讨论】:

        【解决方案3】:
        NSString *iOSversion = [[UIDevice currentDevice] systemVersion];
                    NSString *prefix = [[iOSversion componentsSeparatedByString:@"."] firstObject];
                    float versionVal = [prefix floatValue];
        
        
                    if (versionVal >= 8)
                    {
                        if ([[UIApplication sharedApplication] currentUserNotificationSettings].types != UIUserNotificationTypeNone)
                        {
        
                            NSLog(@" Push Notification ON");
                        }
                        else
                        {
        
                            NSString *msg = @"Please press ON to enable Push Notification";
                            UIAlertView *alert_push = [[UIAlertView alloc] initWithTitle:@"Push Notification Service Disable" message:msg delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Setting", nil];
                            alert_push.tag = 2;
                            [alert_push show];
        
                            NSLog(@" Push Notification OFF");
        
                        }
        
                    }
                    else
                    {
                        UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
                        if (types != UIRemoteNotificationTypeNone)
        
                        {
                            NSLog(@" Push Notification ON");
        
                        }
                        else
                        {
                            NSString *msg = @"Please press ON to enable Push Notification";
                            UIAlertView *alert_push = [[UIAlertView alloc] initWithTitle:@"Push Notification Service Disable" message:msg delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Setting", nil];
                            alert_push.tag = 2;
                            [alert_push show];
        
                            NSLog(@" Push Notification OFF");
                        }
        
                    }
        

        【讨论】:

          【解决方案4】:
                  UIUserNotificationType allNotificationTypes =
                  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
          
                  UIUserNotificationSettings *settings =
                  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
                  [[UIAp
          

          plication sharedApplication] registerUserNotificationSettings:settings];

          // [[UIApplicationsharedApplication]registerForRemoteNotifications];

                  if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {
          
          
                      UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
          
                      if (types == UIUserNotificationTypeNone) {
          
          
          
                      [_TransparentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.8]];
          
          
                        lblDescription.text=@"Please enable notifications from settings.";
                      }
          
                  }
              }
          

          【讨论】:

            【解决方案5】:

            试试这个代码。它适用于 iOS 8.0 更高版本和之前的版本。

             if (([[[UIDevice currentDevice] systemVersion] compare:8.0 options:NSNumericSearch] != NSOrderedAscending)) {
                if (![[UIApplication sharedApplication] isRegisteredForRemoteNotifications])
                {
                    DisplayAlert(@"Please enable Permission from Settings->App Name->Notifications->Allow Notifications");
                    return;
                }
            }
            else{
                UIRemoteNotificationType status = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
                if (status == UIRemoteNotificationTypeNone)
                {
                    DisplayAlert(@"Please enable Permission from Settings->App Name->Notifications->Allow Notifications");
                    return;
                }
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-02-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-08-30
              • 1970-01-01
              • 2019-10-23
              相关资源
              最近更新 更多