web-dev-qa-db-fra.com

Pourquoi les notifications Push ne fonctionnent pas sur testflight?

J'ai testé les notifications Push en tant que compte de développeur et cela a fonctionné. Mais lorsque j'ai essayé de le mettre sur TestFlight pour que les testeurs le testent, il n'affichait pas de notification Push, mais les données sont correctement reçues. certificat que je dois générer pour TestFlight?

64
Iman

Mais quand j'ai essayé de le mettre sur TestFlight pour que les testeurs le testent, il n'affichait pas de notification Push, mais les données sont correctement reçues.

Cette phrase est déroutante. Si vous n'avez pas reçu la notification Push, quelles sont les données correctement reçues?

Quoi qu'il en soit, si je me souviens bien, vous utilisez pour TestFlight un profil de configuration AdHoc, qui fonctionne avec l'environnement de production Push. Par conséquent, vous aurez besoin d'un certificat de production pour pouvoir transférer vers les appareils ayant installé l'application via TestFlight. De plus, n'oubliez pas que les jetons de périphérique de développement sont différents des jetons de périphérique de production, assurez-vous donc que vous utilisez les bons jetons.

76
Eran

1.Vous devez utiliser un certificat de production pour la construction de testflight . 2. Il est également nécessaire de supprimer sanbox (mode sandbox) de l'URL de notification Push dans le script d'envoi Push.

35
Sandeep

Si vous utilisez Firebase, vous devez ajouter:

  • Vol d'essai:

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

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

si vous avez utilisé GCM . En développement: -

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

En distribution: -

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

Pour TestFlight, utilisez 

  1. Certificat de production
  2. "gateway.Push.Apple.com" sur le serveur (tâche principale)
3
Md Rais

Pour quelqu'un utilise Python apns ( https://github.com/djacobs/PyAPNs ):

Lorsque vous créez un objet APNS tel apns = APNs(cert_file="cert.pem", key_file="key.pem"). Vous devez ajouter un paramètre use_sandbox supplémentaire. Ce sera apns = APNs(use_sandbox=False, cert_file="cert.pem", key_file="key.pem").

Bonne codage.

1
Luat Vu Dinh

Nous avons besoin de deux certificats pour l'envoi de notifications, un pour le développement et l'autre pour la production. Dans mon cas, j'utilise la solution PushSharp pour envoyer une notification.

Ceci est pour le développement:

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

Ceci est pour la production:

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

Assurez-vous que vous avez défini FirebaseAppDelegateProxyEnabled sur YES dans le fichier info.plist.

0
AnupamChugh