为什么推送通知不适用于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);