Ios 为什么推送通知在testflight上不起作用?
我已经作为一个开发者帐户测试了推送通知,并且它工作了,但是当我尝试将它放在TestFlight上供测试人员测试它时,它没有显示推送通知,但是数据被正确接收,所以我需要为TestFlight生成一种证书吗 但是当我尝试将它放在TestFlight上供测试人员测试时,它没有显示推送通知,但数据被正确接收 那句话令人困惑。如果您没有收到推送通知,正确接收了哪些数据 无论如何,如果我没记错的话,对于TestFlight,您使用的是一个临时配置文件,它与生产推送环境一起工作。因此,您需要生产推送证书才能通过TestFlight推送到安装了应用程序的设备。此外,不要忘记开发设备令牌与生产设备令牌不同,因此请确保使用正确的令牌Ios 为什么推送通知在testflight上不起作用?,ios,push-notification,apple-push-notifications,testflight,Ios,Push Notification,Apple Push Notifications,Testflight,我已经作为一个开发者帐户测试了推送通知,并且它工作了,但是当我尝试将它放在TestFlight上供测试人员测试它时,它没有显示推送通知,但是数据被正确接收,所以我需要为TestFlight生成一种证书吗 但是当我尝试将它放在TestFlight上供测试人员测试时,它没有显示推送通知,但数据被正确接收 那句话令人困惑。如果您没有收到推送通知,正确接收了哪些数据 无论如何,如果我没记错的话,对于TestFlight,您使用的是一个临时配置文件,它与生产推送环境一起工作。因此,您需要生产推送证书才能通
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};
分发:-
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};
如果使用Firebase,则必须添加:
- 试飞:
-(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]; }
var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, "production.p12", "password"); var broker = new ApnsServiceBroker(config);
var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Sandbox, "development.p12", "password");
var broker = new ApnsServiceBroker(config);
这是为了生产:
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd];
}
var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, "production.p12", "password");
var broker = new ApnsServiceBroker(config);
对于TestFlight,使用
对于使用Python APN的用户(): 创建APNS对象时,例如
APNS=APNS(cert\u file=“cert.pem”,key\u file=“key.pem”)
。您需要再添加一个参数使用\u sandbox
。它将是apns=apns(使用\u sandbox=False,cert\u file=“cert.pem”,key\u file=“key.pem”)
愉快的编码。请确保您已在info.plist文件中将
FirebaseAppDelegateProxyEnabled
设置为YES
。对于Firebase,请尝试以下操作:
#if DEBUG
Messaging.messaging().setAPNSToken(apnsToken, type: .sandbox)
#else
Messaging.messaging().setAPNSToken(apnsToken, type: .prod)
#endif
我在文档中没有看到任何关于生产设备令牌的内容-您能指定一点吗?@PeterPiper
如果令牌来自沙箱环境,例如当您在内部测试开发构建时,您不能将其发送到生产推送服务。每个推送环境将为同一设备或计算机发出不同的令牌。如果您确实向错误的环境发送了设备令牌,推送服务会将其视为无效令牌并放弃通知。
摘自.Dear@Eran,你有任何教程来说明如何创建生产证书吗?这也适用于游戏套件的通知吗?@tallis我不知道。#1是我应该记住的。谢谢。测试:gateway.sandbox.push.apple.com生产:gateway.push.apple.com使用TestFlight的生产证书,因为它是一个分发版本,并且ssl://gateway.push.apple.com:2195 与发送通知的沙盒URL不同,这可能是一个非常愚蠢的问题,但是如果你同时做这两件事会发生什么呢?@GáborAngyal-不清楚会发生什么。有趣的是这句话“如果令牌类型设置为FirinStanceIdInstankEntyPeUnknown InstanceID将读取配置文件以查找令牌类型。”来自。从逻辑上讲,这意味着每个人都可以简单地执行type:FIRInstanceIDAPNSTokenTypeUnknown
,这样我们就不必记住要更改它了。我自己还没有尝试过……我尝试过使用FIRInstanceIDAPNSTokenTypeUnknown
valuef或type参数,并且可以确认我能够使用Firebase 4.0新的Swift语法在testflight Builds上接收推送通知,它现在是Messaging.Messaging().setAPNSToken(deviceToken,type:.unknown)我需要从answer中添加此函数的文件是什么?我可以在哪里更改服务器的配置?嗨,Alexandre,我不确定后端开发人员在哪里声明网关,因为我不是后端开发人员。但我知道,在某个时候,我们必须写它。这也是行不通的。