【问题标题】:Get device token if user refuse Push notification ios如果用户拒绝推送通知 ios,则获取设备令牌
【发布时间】:2013-04-19 23:36:55
【问题描述】:

我已将推送通知设置到我的新应用中。我听说这不是一个好方法,但我使用以下方式获取设备令牌:

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken
{


    NSString *deviceToken = [[newDeviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    deviceToken = [deviceToken stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSLog(@"###### DEVICE TOKEN = %@ #########",deviceToken); 


}

对我来说一切都很好,但是我使用此令牌将用户登录到我的基地,但我有一个问题:如果用户拒绝接收推送通知,我如何获得设备令牌?如何在 App Delegate 之外获取设备令牌?

【问题讨论】:

    标签: ios6 apple-push-notifications


    【解决方案1】:

    如果用户不同意接收推送通知,您将无法获取设备令牌。方法

    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
    

    将被调用,但您无法从中获取令牌。

    如果您正在寻找一个唯一标识符,您应该考虑使用 identifierForVendor。请参阅此处的文档:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor

    【讨论】:

      【解决方案2】:

      即使用户拒绝接收推送通知,也会调用此方法。您可以使用 UIRemoteNotificationType 来获取用户的选择。

      - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
      {
          NSLog(@"My token is: %@", deviceToken);
      
          UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
          if (types == UIRemoteNotificationTypeNone){
              NSLog(@"User refused to receive push notifications");
          }else{
              NSLog(@"User agreed to receive push notifications");
          }
      }
      

      对于第二个问题,您无法在此回调之外从 iOS 获取设备令牌。

      【讨论】:

      • no 如果用户拒绝通知,则不会调用此方法。 . .不过非常感谢
      • 它不应该,但它被调用了。我在 AppStore 上有一个带有此代码的实时应用程序,我为拒绝接收推送通知的用户获取 deviceToken(但当然,我不能向他们发送推送消息)。
      • 实际上,iOS7 上的行为似乎发生了变化。现在仅当用户接受推送时才会发送令牌。您部分正确,因为在以前的版本中,我们可以在用户做出选择之前检索它,即使用户拒绝它..
      • 可能会重新出现,但即使用户拒绝,您仍然会收到令牌在 iOS 9 中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多