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

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

6 ответов


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

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

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


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


Если вы используете 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]; 
    }
    

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

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

В Рассылки:-

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

для тестового полета используйте

  1. сертификат производства
  2. "gateway.push.apple.com" на сервере (back end job)

нам нужны два сертификата для отправки уведомлений, один для разработки и один для производства. В моем случае я использую решение 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);