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?
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.
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.
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];
}
si vous avez utilisé GCM . En développement: -
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};
En distribution: -
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};
Pour TestFlight, utilisez
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.
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);
Assurez-vous que vous avez défini FirebaseAppDelegateProxyEnabled
sur YES
dans le fichier info.plist.