2014-10-07 6 views
4

У меня проблема после обновления нашего приложения для работы с iOS 8, где registerForRemoteNotificationTypes, похоже, не работает на телефоне под управлением iOS 7, так как в didRegisterForRemoteNotificationsWithDeviceToken не вызывается и «Разрешить Push-уведомления» Диалог не отображается в приложении. Это код, я используюregisterForRemoteNotificationTypes не работает iOS7 xcode 6

// Add registration for remote notifications 
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { 
    NSLog(@"iOS 8 Registering for remote notification"); 
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; 
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; 
    [[UIApplication sharedApplication] registerForRemoteNotifications]; 
} else { 
    NSLog(@"Registering for remote notification"); 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 
} 

Этот код работает отлично подходит для телефонов, работающих под управлением IOS 8, только не IOS 7. Еще один бит информации, нам удалось получить уведомления толчка, чтобы работать на IOS 7 телефон только после того, как запуск приложения через xcode с подключенным телефоном. Затем мы развернули тот же код, что и ad Hoc, на другой iPhone и iPad под управлением iOS 7, и ни одна из них не работала. Есть ли что-то очевидное, я здесь отсутствует.

+2

'Затем мы развернули тот же код, что и объявление Hoc для другого iPhone и iPad, работающего под управлением iOS 7, и ни один из них не работал. Звуки, как профили обеспечения и push-сертификаты, настроены неправильно. Проверьте журналы консоли для своего устройства и вашего приложения. –

+0

Я сам начинаю, но не стоит размещать [[UIApplication sharedApplication] registerForRemoteNotifications]; внутри метода делегата didRegisterUserNotificationSettings? И только если возвращенные оповещения содержат настройки UIUserNotificationTypeAlert? – Innova

+0

Вышеприведенный код идет в didFinishLaunchingWithOptions. didRegisterForNotifications инициируется успешным вызовом registerForRemoteNotifications –

ответ

0

Я заметил, что XCode 6 создает собственные профили обеспечения, помеченные XC, они также отображаются в профилях подготовки учетной записи разработчика. Когда вы экспортируете приложение для выпуска ad Hoc, он использует один из этих профилей, и, похоже, нет способа выбрать профиль, который вы создали, и установить его в настройке сборки. Похоже, что он использовал профиль wild card, который отключил push-уведомление. Мне удалось снова экспортировать профиль, который, по-видимому, был основан на том, что я создал с помощью push-включения, и он начал работать. Это объясняет, почему мне удалось заставить его работать, если я загрузил приложение прямо на телефон из Xcode.

0

У меня была та же проблема. В моей ситуации это становится простой проблемой. Сначала вы должны сначала проверить настройки уведомлений. Переход в центр настройки/уведомления и проверка того, открыт ли тип уведомлений в вашем коде. Надеясь, что это может вам помочь!

1

Пробуйте этот код, может работать для вас.

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) 
{ 
// iOS 8 Notifications 
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 

[application registerForRemoteNotifications]; 
} 
else 
{ 
// iOS < 8 Notifications 
[application registerForRemoteNotificationTypes: 
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; 
} 
return YES; 
} 
0

да код будет очень правильно, но, чтобы получить уведомление, уведомление по умолчанию на устройстве первого сброса содержимого вашего тренажера и переустановить приложение freshly.i попытался это и хорошо работает на тренажере также.

Смежные вопросы