Не отримує маркер пристрою APNS на ios 13


14

У мене виникла проблема, пов’язана з маркером пристроїв APNS. До того, як я використовував Xcode 10.2 та iOS 12.1. У цей момент я використовував маркер пристрою методом делегата

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

Я реєструюсь як APNS, як це, і він працював чудово.

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
                if(!error){
                    [[UIApplication sharedApplication] registerForRemoteNotifications];
                }
    }];

Тепер при встановленні iOS 13 на моєму пристрої iPhone та використанні Xcode 11 метод делегата didRegisterForRemoteNotificationsWithDeviceToken не викликається. Неможливо зрозуміти цю проблему. Я вже провів дослідження з цього приводу, я знаю, що є деякі зміни в отриманні токена від методу делегата, але в моєму випадку метод делегата навіть не викликається. Знову це чудово працює для iOS 12.


Це вирішено зараз. Довелося створити всі сертифікати для Xcode 11 з порталу розробників, і це спрацювало.
IOS Dev

@IOSDev Будь-ласка, документуйте, що ви зробили. Я зараз натрапляю на те саме; я думаю, тут є хороша карма.
Даррен Блек

1
Ви знайшли для цього якесь рішення? Я біжу з тим же питанням.
Аман.Самгані

1
@ Aman.Samghani: Так, це не вперше, коли буде створено попередження про Push-сповіщення. Мені довелося знову викликати той самий код реєстру Push Notification, тоді я отримав маркер пристрою. Тож у двічі чи тричі спробуйте я отримав жетон.
IOS Dev

Відповіді:


14

Просто перезавантажте iPhone. Це так просто, і в 90% випадків це вирішить вашу проблему.


1
Я хотів би прочитати цей коментар раніше. Було витрачено 5 годин ++, щоб налагодити та дивитись дивно на профіль тощо
zuyao88

1
Робота для мене, iOS 13.3.1
Джонатан

це дивно трапляється, я витратив 3 години на з'ясування того, що не так,
fakiho

2

Увійдіть на https://appleid.apple.com/ , а потім відкрийте URL-адресу " https://developer.apple.com/account/ios/identifier/bundle " або " https://developer.apple.com/account/resources / сертифікати / список ".

По-перше, створіть два нових сертифікати: (1) Версії для розробки знаків Apple для розробки ваших додатків для iOS, macOS, tvOS та watchOS. Для використання в Xcode 11 або новішої версії. (2) Дистрибуція Apple Підпишіть свої програми для подання в App Store або для спеціального розповсюдження. Для використання з Xcode 11 або новішою версією.

Потім знайдіть меню "Ідентифікатори" через URL " https://developer.apple.com/account/resources/identifiers/list ". Відредагуйте свої ідентифікатори свого додатка, переконайтеся, що SSL сертифікат розробки та виробництво SSL сертифікат додано до Push Notifications.

Далі відкрийте меню "Профілі" через URL " https://developer.apple.com/account/resources/profiles/list ". Переконайтеся, що сертифікати як тип розповсюдження для цього будуть використовуватися в Xcode 11 або пізно, і збережіть

Нарешті, завантажте файл профілю Provisioning Profile та файли сертифікатів CA, створені на ваш MAC, які будуть додані до програми XCode та ключових ланцюгів подвійним клацанням файлів окремо.

Крім того, не забудьте перезавантажити мобільний телефон і переконайтесь, що ви правильно налаштували віддалене сповіщення.


1

Я також зіткнувся з тією ж проблемою. Я випробував багато сценаріїв. Я отримав успіх, зробивши наведені нижче дії:

  1. Перезапущений пристрій
  2. Викликається registerForRemoteNotifications метод у головній нитці.

У моєму випадку я отримував маркер пристрою, але є затримка у відповіді (я думаю, через реєстрацію віддалених сповіщень у фоновому потоці). Але після переміщення [[UIApplication sharedApplication] registerForRemoteNotifications]в основну нитку все працює добре.

Ось мій код:

    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = delegate;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
        if(!error){
            dispatch_async(dispatch_get_main_queue(), ^{
                [[UIApplication sharedApplication] registerForRemoteNotifications];
                [self callCompletion:TRUE completion:completion];
            });
        }
    }];

Сподіваюсь, це допоможе.


взагалі не працює
Вячаслав Герчичев

0

Я просто вирішив цю проблему таким чином, виконуючи наведені нижче кроки.

Додайте трохи друку у методі didRegisterForRemoteNotificationsWithDeviceToken та підтримуйте з'єднання пристроїв.

  1. Пішли до цільових можливостей.
  2. Вимкніть повідомлення Push
  3. Створіть і запустіть додаток на пристрої та зачекайте.
  4. Потім перевірте консоль, яку ви отримали Помилка повідомлення про помилку натискання.
  5. Зупиніть запускати додаток.
  6. Увімкніть функцію Push Notification знову.
  7. Перейдіть на сторінку https://developer.apple.com/ Виберіть обліковий запис -> Сертифікати, ідентифікатори та виберіть проект ProvisionalProfiles -> Ключі -> натисніть на редагування та збережіть після цього завантаження попереднього профілю та двічі клацніть по ньому.
  8. Побудувати та запустити додаток на пристрої.
  9. Тоді його добре працює.

    Я сподіваюся, що це комусь допоможе.


-2

Це стосується відсутності DeviceSupport у вашій установці XCode для версії платформи, що використовується вашим пристроєм розгортання.

У моєму випадку платформа 13.1 відсутня. Щоб вирішити, просто додайте DeviceSupports у папку

Xcode.app/Contents/Develper/Platforms/iPhoneOS.platform/DeviceSupport

Ви можете завантажити відсутній DeviceSupport з: https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport


Не пощастило @Giuseppe, навіть не працює 12.4.2
IOS Dev

Це вирішено зараз. Довелося створити всі сертифікати для Xcode 11 і воно спрацювало.
IOS Dev

Я створив обидва сертифікати, але це все ще не працює. Я також перевірив DeviceSupports і 13.1 є. Я використовую xcode 11.1 і тестую на iphone 7 з iOS 13.1. Будь-які пропозиції?
Ugo Chirico

1
Я додав фонові режими: завантаження, обробку та віддалене оповіщення, перезавантажив iphone, а потім він працював. Дійсно, я не розумію, чому, але зараз це працює
Ugo Chirico

як підтримка пристрою для симулятора належить до проблеми, пов’язаної з реальним пристроєм?
В’ячаслав Герчич

-2

Спробуйте це.

  1. Видаліть заявку.
  2. Перезавантажте телефон.
  3. Створіть та запустіть (перевстановіть програму) на своєму пристрої.

Це працювало для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.