it-swarm.com.ru

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

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

64
Iman

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

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

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

76
Eran

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

35
Sandeep

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

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

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

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

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

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

  1. Производственный сертификат
  2. «gateway.Push.Apple.com» на сервере (задание конца)
3
Md Rais

Для кого-то используется 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").

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

1
Luat Vu Dinh

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