iOS App未注册推送通知

时间:2015-04-30 06:31:17

标签: ios8 push-notification apple-push-notifications

我正在尝试在我的iOS应用中注册推送通知。但它既不调用didRegisterForRemoteNotificationsWithDeviceToken也不调用didFailToRegisterForRemoteNotificationsWithError回调方法。我已撤消并重新生成应用的配置文件。

我使用的是iOS8,我在Info.plist中启用了以下背景模式

  1. 应用程序注册位置更新
  2. 应用下载内容以响应推送通知
  3. 应用程序从网络下载内容
  4. 代码是:

    -(void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
        NSLog(@"Failed to register for push");
    }
    
    -(void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        NSLog(@"did succeed in register for push");
    
        // Get the device token string
        const char* data = [deviceToken bytes];
        NSMutableString* token = [NSMutableString string];
    
        for (int i = 0; i < [deviceToken length]; i++) {
            [token appendFormat:@"%02.2hhX", data[i]];
        }
        [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"DeviceToken"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    
    -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    
        [self respondToEventNotification:userInfo];
    
    }
    
    -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    
        [self respondToEventNotification:userInfo];
    
    }
    

1 个答案:

答案 0 :(得分:1)

您是否使用didFinishLaunchingWithOptions方法为iOS8方法注册了您的应用,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
        [[UIApplication sharedApplication] registerForRemoteNotifications];
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge
                                                                                         |UIRemoteNotificationTypeSound
                                                                                         |UIRemoteNotificationTypeAlert) categories:nil];

        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
    }
    else
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
         (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

}

您必须考虑iOS8中推送通知的注册过程。

愿这对你有所帮助。