Подтвердить что ты не робот

Почему push-уведомления не работают на testflight?

Я тестировал push-уведомления как учетную запись разработчика, и это сработало. Но когда я попытался поместить его на TestFlight для тестирования тестировщиков, он не показывал push-уведомление, но данные были правильно получены. Так что есть своего рода сертификат, который мне нужно создать для TestFlight?

4b9b3361

Ответ 1

Но когда я попытался поместить его на TestFlight для тестировщиков, чтобы проверить его, он не показывал push-уведомление, но данные были правильно получены.

Это предложение сбивает с толку. Если вы не получили push-уведомление, какие данные правильно приняты?

В любом случае, если я правильно помню, для TestFlight вы используете профиль подготовки AdHoc, который работает с рабочей средой push. Поэтому вам понадобится сертификат производственного нажатия, чтобы нажать на устройства, которые установили приложение через TestFlight. Кроме того, не забывайте, что маркеры для разработки отличаются от токенов производственных устройств, поэтому убедитесь, что вы используете правильные токены.

Ответ 2

  1. Вам нужно использовать производственный сертификат для сборки testflight.
  2. Также необходимо удалить sanbox (режим песочницы) из URL-адреса push-уведомлений в сценарии push-отправки.

Ответ 3

Если вы используете Firebase, вам нужно добавить:

  • TestFlight:

    -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox]; 
    }
    
  • Производство:

    -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd]; 
    }
    

Ответ 4

Для TestFlight используйте

  1. Производственный сертификат
  2. "gateway.push.apple.com" на сервере (задание конца)

Ответ 5

если вы использовали GCM. В разработке: -

_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};

В распределении: -

_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};

Ответ 6

Нам нужны два сертификата для отправки уведомлений: один для разработки и один для производства. В моем случае я использую решение PushSharp для отправки уведомлений.

Это для разработки:

var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Sandbox, "development.p12", "password");
var broker = new ApnsServiceBroker(config);

Это для производства:

var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, "production.p12", "password");
var broker = new ApnsServiceBroker(config);

Ответ 7

Для кого-то используется Python apns (https://github.com/djacobs/PyAPNs):

При создании объекта APNS такой apns = APNs(cert_file="cert.pem", key_file="key.pem"). Вам нужно добавить еще один параметр use_sandbox. Это будет apns = APNs(use_sandbox=False, cert_file="cert.pem", key_file="key.pem").

Удачного кодирования.

Ответ 8

Убедитесь, что вы установили FirebaseAppDelegateProxyEnabled в YES в файле info.plist.