区分苹果推送通知的分发和开发

问题描述:

当我启动应用程序时,它会注册推送通知,并根据供应配置文件生成不同的推送令牌。区分苹果推送通知的分发和开发

由于AdHoc和AppStore供应配置文件连接到同一台服务器,我必须以某种方式区分它是什么类型的令牌,以便服务器可以连接到正确的Apple服务器。 (沙箱/生产)

怎么能实现呢?

我相信实现这一目标的最佳方法是在将令牌发送到服务器时使开发/生产区别开来,并让服务器在数据库中注释令牌的类型。

当然你有一些API调用你的服务器传递令牌。在那个调用中,也传入令牌的类型。例如:

{ "token" : "abcd....", "type" : "development" } 

实际上使在构建时的区别,你可以使用预处理指令,以检测它是否是一个调试版本,发布版本,或App Store的构建。

检查是否启用调试很容易,但要区分是AdHoc还是App Store,请考虑创建用户定义的变量。为此,请克隆Release方案并创建一个名为App Store的方案。然后在您的Build Settings中,转到用户定义的变量并创建一个名为APP_STORE,但仅限于App Store方案。当您发布到商店时,确保您在存档时使用该方案进行生成,而不是使用Release

然后,检查类型传递到您的API是这样做很容易:

NSString *type = nil; 
#ifdef DEBUG 
    type = @"debug"; 
#elseif APP_STORE 
    type = @"app_store"; 
#else 
    type = @"release"; 
#endif 
+0

是的,这就是我们正在做的,现在,即使对于这两种模式不同的服务器。但不知何故分发苹果服务返回“无效的令牌”,所以我想编程方式检查开发/分配标志,并将其发送到服务器只是为了确保。 – sigma

+0

你能分享你的IFDEF吗?提出的建议应该起作用。 – Dan

+0

经过大量测试后,我们发现配置文件“无效”(会员中心的黄色标志)。重新创建后,一切都很顺利。生成APN令牌,服务器能够发送推送等。对不起,混淆和thx! – sigma