为什么推送通知不适用于testing?

我已经testing推送通知作为开发者帐户,它的工作,但是当我试图把它放在TestFlight的testing人员来testing它,它没有显示推送通知,但数据正确接收,那么是否有一种证书,我需要为TestFlight产生?

但是,当我试图把它放在TestFlight的testing人员来testing它,它没有显示推送通知,但数据正确接收。

那句话令人困惑。 如果你没有得到推送通知,什么数据被正确接收?

无论如何,如果我记得正确的话,对于TestFlight,您正在使用AdHoc供应configuration文件,它与生产推送环境配合使用。 因此,您需要生产推送证书才能推送到通过TestFlight安装应用程序的设备。 此外,不要忘记,开发设备令牌与生产设备令牌不同,因此请确保使用正确的令牌。

1.您需要使用生产证书进行testflight构build。 2.还需要在推送发送脚本中从推送通知url中移除sanbox(沙盒模式)。

如果您使用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}; 

我们需要两个证书来发送通知,一个用于开发,一个用于生产。 在我的情况下,我使用PushSharp解决scheme发送通知。

这是为了发展:

 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);