DidRegisterForRemoteNotificationsWithDeviceToken: не вызывает при вызове registerForRemoteNotificationTypes:? - программирование

DidRegisterForRemoteNotificationsWithDeviceToken: не вызывает при вызове registerForRemoteNotificationTypes:?

Я работаю с push-уведомлениями в приложении navBased. в AppDelegate.m didRegisterForRemoteNotificationsWithDeviceToken: не вызывает при вызове registerForRemoteNotificationTypes: код выглядит следующим образом:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

    [self.window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];

    return YES;
}



- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    // Get a hex string from the device token with no spaces or < >
    NSLog(@"applicationDidFinishLaunchingWithOptions dev token test");

    NSString *deviceTokenStr = [[[[deviceToken description]
                          stringByReplacingOccurrencesOfString: @"<" withString: @""] 
                         stringByReplacingOccurrencesOfString: @">" withString: @""] 
                        stringByReplacingOccurrencesOfString: @" " withString: @""];

    NSLog(@"Device Token: %@", deviceTokenStr);
}

Я уверен, что профиль подготовки не является проблемой. и я обнаружил ошибку:

Ошибка при регистрации. Ошибка: Ошибка Домен = NSCocoaErrorDomain Code = 3000 "no valid" строка соответствия aps-environment ", найденная для приложения" UserInfo = 0x115490 {NSLocalizedDescription = нет допустимой строки права доступа aps-environment, найденной для приложения}

Может ли кто-нибудь сказать мне, что происходит в этом коде, и не работает ли он? thanx

4b9b3361

Ответ 1

Проверьте это: И убедитесь, что у вас открыт порт 5223.

Ответ 2

Введите этот код в Appdelegate doneFinishLaunching method this -

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

а затем просто скопируйте и вставьте эти два метода в один и тот же appdelegate -

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    NSLog(@"My token is: %@", deviceToken);
        NSString *dToken = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    dToken = [dToken stringByReplacingOccurrencesOfString:@" " withString:@""];


    NSLog(@"STR%@",dToken);


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

    NSLog(@"Failed to get token, error: %@", error);
}

Ответ 3

У меня была эта точная ошибка ранее " "" не допустимая строка права доступа aps-environment, найденная для приложения " "".

Чтобы решить эту проблему, вам нужен специальный профиль подписи кода с правильным идентификатором приложения для APNS (т.е. не профиль. *). Google, вы можете найти несколько пошаговых руководств о том, как правильно его разрешить.

Если вы видите эту ошибку в журнале, попробуйте удалить профиль на устройствах iOS в разделе > Настройки > Общие > Профили и переустановите их в организаторе.

Ответ 4

Откройте профиль mobileprovisioning, который вы используете для своего приложения, и найдите там строку "aps-environment". Он должен быть настроен на "развитие" или "производство".

Полученная вами ошибка означает, что у вас нет этой строки в профиле, поэтому приложение просто не разрешено регистрироваться для push-уведомлений. Это произойдет, если вы создали профиль перед настройкой push-уведомлений для идентификатора приложения.

Если вы не видите строку - обновите (удалить/создать новый) профиль mobileprovisioning на портале разработчиков iOS. что решит проблему.

Также убедитесь, что при отправке в AppStore вы снова создаете профиль AppStore для своего приложения. Он должен содержать ту же строку "aps-environment" И не существует по умолчанию, если вы создали профиль подготовки AppStore до того, как вы настроили push-уведомления для вашего APP-идентификатора.

Ответ 5

После того, как вы создали сертификат SSL клиента, создайте новый профиль подготовки, содержащий идентификатор приложения, который вы хотите использовать для уведомлений.