Получить маркер устройства для push-уведомления во второй раз на iPhone - PullRequest
1 голос
/ 16 марта 2012

Мне нужно получить токен устройства на моем iPhone, чтобы проверить push-уведомление. На моем iPhone я уже согласился уведомить о push-разрешениях. Я пытаюсь удалить и переустановить приложение, но ничего. Я пытаюсь установить точку взлома в методе didRegisterForRemoteNotificationsWithDeviceToken, но ничего.

Есть предложения?

Это мой код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    /**** PUSH NOTIFY ****/
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge];

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];

    return YES;
}


- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSMutableString *str = [[NSMutableString alloc] initWithFormat:@"http://www.mysite.com/storeToken.php?task=register&token=%@", [self stringWithDeviceToken:deviceToken]];
    //NSLog(@"%@",str);
    NSUserDefaults *pref = [NSUserDefaults standardUserDefaults];    
    [pref setObject:[self stringWithDeviceToken:deviceToken] forKey:@"token"];
    [pref synchronize];

    NSURL *url = [NSURL URLWithString:str];

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request startSynchronous];

    [str release];
}

- (NSString*)stringWithDeviceToken:(NSData*)deviceToken {
    const char* data = [deviceToken bytes];
    NSMutableString* token = [NSMutableString string];

    for (int i = 0; i < [deviceToken length]; i++) {
        [token appendFormat:@"%02.2hhX", data[i]];
    }

    return [[token copy] autorelease];
}

Это ошибка, которую он печатает:

Error: Error Domain=NSCocoaErrorDomain Code=3000 "nessuna stringa di autorizzazione 'aps-environment' valida trovata per l'applicazione" UserInfo=0x296e80 {NSLocalizedDescription=nessuna stringa di autorizzazione 'aps-environment' valida trovata per l'applicazione}

1 Ответ

4 голосов
/ 16 марта 2012

Хорошо иметь другой метод делегата для обработки ошибок:

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"Fail to register for remote notifications: %@", [error localizedDescription]);
}

После обновления вопроса становится яснее, что проблема в неправильном профиле обеспечения (универсальном или без 'aps-evironment').Итак:

  • Удалите все просроченные профили и все профили для этого приложения как из XCode, так и из устройства
  • Проверьте, включены ли push-уведомления для вашего приложения (на портале инициализации)
  • Загрузите профиль обеспечения с портала, установите его в XCode
  • Убедитесь, что выбранный профиль (в настройках сборки / идентификаторе кодирования) соответствует приложению и не является универсальным / подстановочным (иногда автоматический выбор работает неправильно)
  • Как обычно (кеширование XCode "волшебство"), лучше перезапустить XCode и удалить приложение с устройства перед сборкой
  • Build & Pray
...