iPhone:在生产证书上进行推送通知测试

26

我有一个快速问题。我一直在为我的iPhone应用测试开发推送通知证书,一切都运行良好。我想知道,在提交我的应用程序到AppStore之前,是否有可能测试生产证书?我尝试了,但当我使用生产证书时,消息没有到达。苹果公司要求我在使用生产证书时必须将应用程序提交到AppStore吗?

谢谢。

3个回答

36
如果您创建了一个Ad-Hoc配置文件,您会发现它使用生产证书,这可能是测试它的最简单方法。
更新:
请参阅此处的Apple文档
虽然有许多步骤,但本质上如下:
1)团队领导者需要创建一个新的分发配置文件。在创建新配置文件时选择“Ad Hoc”而不是“App Store”即可完成此操作。顺便提一下,您不能为此使用通配符应用程序ID,您需要具有特定的应用程序ID,尽管您可能已经有此ID。
2)设置系统以便构建存档使用新创建的Ad Hoc配置文件,设置所需的步骤已在网上得到很好的记录,这里是一个例子
3)现在,当您将.ipa分发给链接到您的Ad Hoc配置文件的设备时,您会发现推送通知系统正在使用生产服务器。
另外,我发现testflightapp非常有用,可以管理Ad Hoc版本的分发。尽管我最近才发现它,但它目前正为我节省数小时时间,因为我正在进行一项测试计划。

1
谢谢Roger,但您能详细说明一下Ad-Hoc配置文件吗? - Paresh Masani
我已经在我的回答中加入了更多的细节。 - Roger
2
+1 为 TestFlight 鼓掌,它是一项很棒的服务(http://testflightapp.com/)。 - ySgPjx
谢谢。对于那些像我一样困惑的人:有三种类型的配置文件,即开发、发布 Ad Hoc 和发布 App Store。'Ad hoc' 应该理想地用于 TestFlight。当直接从 Xcode 运行时,我使用 'development',在调试模式下。'Development' 也可以用于 TestFlight,尽管这可能不是理想的选择 - 请参阅原帖子的问题。 - Timo

9

针对Adhoc分发,请按照以下步骤操作:

  1. 在管理门户中创建分发证书。
  2. 获取您打算用于测试的iPhone的“设备ID”。打开iTunes -> 连接您的设备 -> 选择您的设备 -> 在摘要窗格中,单击“序列号”标签,它将更改为标识符(40个十六进制字符) -> 选择编辑,复制。
  3. 在管理门户中,转到“设备” -> 添加新设备 -> 输入复制的设备ID并命名。
  4. 在管理门户中,创建分发配置文件。(转到“配置文件” -> “分发”)对于分发类型,勾选“AdHoc”,选择应用程序ID,如果您有一个分发证书,它将自动在此处选择。选择新输入的设备并提交。下载此配置文件。
  5. 在Xcode中,选择“窗口” -> “组织者”。单击“设备”并选择“库” -> “配置文件”。如果您是管理员,则单击“刷新”应获取新创建的配置文件。如果不是,则将Adhoc分发配置文件拖放到此列表中。
  6. 在Xcode中,进入您的项目Build设置 -> Code Signing Identity -> Release部分,选择“iPhone Distribution”。对于“Any iOS SDK”,选择新创建的配置文件。它将出现在列表中。
  7. 在Xcode中,选择“产品” -> “归档”。一旦完成,存档,它将自动打开存档窗口。选择项目并点击"发布",在发布窗口中,选择 "为企业或AdHoc部署保存" -> 选择对应于新分发配置文件的 "Code Signing Identity"。继续该过程,并将创建一个“.ipa”文件。
  8. 发送此“.ipa”文件和新的分发配置文件,以进行Adhoc分发测试。

如何在测试设备上加载AdHoc分发:

  1. 打开iTunes,连接您的测试设备。
  2. 将新的分发配置文件拖放到iTunes中。
  3. 将“.ipa”文件拖放到iTunes中。
  4. 同步您的设备。这将加载应用程序。

要使Push通知在Adhoc分发中正常工作:

  1. 请使用生产证书。
  2. 使用生产APN主机:gateway.push.apple.com。
  3. 使用生产APN反馈主机:feedback.push.apple.com。

在测试开发环境的推送通知时,有几个检查事项需要注意。其中大多数已经在上面提到了。但是我想分享的一个解决了我的问题,希望对某些人有所帮助。那就是:

请注意,设备令牌ID在开发和生产环境中是不同的。

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
       NSString *deviceTokenStr = [[[[deviceToken description]
                                      stringByReplacingOccurrencesOfString: @"<" withString: @""]
                                     stringByReplacingOccurrencesOfString: @">" withString: @""]
                                    stringByReplacingOccurrencesOfString: @" " withString: @""];
       UIAlertView *alert= [[UIAlertView alloc]initWithTitle:deviceTokenStr message:Nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
}

非常感谢您的帮助! - toioski

5

备选方案

如果你想要节省更多时间,并且在生产环境中调试1测试这些通知,而不必每次都构建和分发,请按照以下步骤操作:

  1. 创建并安装你的发布配置文件(Distribution provisioning profile)。
  2. 使用发布(Release)配置,创建一个新的scheme(见本文第二部分的说明),并选择它。
  3. 在你的应用目标构建设置下,确保你已经为发布配置选择了发布配置文件。
  4. 就可以开始了!

如何创建一个新的scheme(配置方案)

  1. 点击左上角的应用名称:

    enter image description here

  2. 选择“New scheme...”并为其命名。

  3. 然后,再次打开此菜单并选择“Edit scheme..."以编辑它。
  4. 在“Build configuration”下选择“Release”:

    enter image description here

  5. 选择它,使其出现在左上角,并完成操作!

1:你不能使用发布或Ad-hoc配置文件进行调试,请参考此线程


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接