为 ad hoc 分发环境启用苹果推送通知

18

我已经成功地为开发环境实现了APN。但是,在为Ad-hoc分发环境实施相同功能时遇到了问题。 请问是否需要为该环境创建不同的应用程序ID、证书和配置文件? 沙盒中是否有任何更改? 非常感谢提供步骤的教程。

谢谢 Saleel Karkhanis

4个回答

28

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

  1. 在Provisioning Portal中创建一个分发证书。
  2. 获取您打算用于测试的iPhone的“设备ID”。打开iTunes -> 连接您的设备 -> 选择您的设备 -> 在概要面板中,单击序列号标签,它将更改为标识符(40个十六进制字符)-> 选择编辑,然后复制。
  3. 在Provisioning portal中,转到“设备”-> “添加新设备”-> 输入复制的设备ID并命名。
  4. 在Provisioning portal中创建一个Distribution Provisioning Profile(转到Provisioning-> Distribution)。对于Distibution类型,请勾选“AdHoc”。选择App Id,如果您有一个distribution证书,则会自动在此处选择。选择新输入的设备并提交。下载此Provisioning Profile。
  5. 在Xcode中,转到窗口->组织器。单击设备并选择库->供应配置文件。如果您是管理员,则单击刷新应该可以获取新创建的供应配置文件。否则,将Adhoc Provisioning Profile拖放到此列表中。
  6. 在Xcode中,在您的项目Build Settings-> Code Signing Identity-> Release部分中,选择“iPhone Distribution”。对于“Any iOS SDK”,选择新创建的Provisioning Profile。它将在列表中可用。
  7. 在Xcode中,产品->归档。完成归档后,它将自动打开归档窗口。选择项目并单击Distribute,在分发窗口中,选择“保存企业版或AdHoc部署”->选择与新Provisioning Profile相对应的“Code Signing Identity”。继续此过程,这将创建一个“.ipa”文件。
  8. 将此.ipa文件和新的供应配置文件发送给测试AdHoc分发。

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

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

使Push Notifications在Adhoc分发中工作的方法:

  1. 使用生产证书。
  • 使用生产环境APN主机:gateway.push.apple.com
  • 使用生产环境APN反馈主机:feedback.push.apple.com

  • 3
    请更新Xcode 8.x的步骤,因为我无法在新版中按照第5步和第7步操作。 - Dashrath

    1
    每个环境(开发和生产)都有一个独立的持久连接到推送服务。操作系统会为开发版本建立与沙盒环境的持久连接;Ad Hoc 和分发版本则连接到生产环境。
    如果您正在使用 GCM,请前往 AppDelegate.swift 文件,找到 didRegisterForRemoteNotificationsWithDeviceToken 方法并替换。
    registrationOptions = [kGGLInstanceIDRegisterAPNSOption:deviceToken,
                               kGGLInstanceIDAPNSServerTypeSandboxOption:true]
    

    使用

    registrationOptions = [kGGLInstanceIDRegisterAPNSOption:deviceToken,
                               kGGLInstanceIDAPNSServerTypeSandboxOption:false
    

    1
    我也遇到过这个主要问题。我的代码没有任何错误,但我从未在Ad Hoc上的手机上收到推送通知。
    原来是我的证书出了问题。我使用团队管理员身份创建了证书,但具体问题我不太确定。最后我以团队代理的身份登录开发者账户并重新创建了所有证书,问题得到解决。
    你的开发模式可能完全正常,因为任何团队成员都可以创建开发分发配置文件。但只有特定的团队成员才能创建分发配置文件。请让你们的团队代理创建所有内容并再次尝试。

    0
    除了Sushma Satish的回答之外, 当您从开发更改证书到分发时,为您的手机生成的设备令牌是不同的。 因此,请确保在服务器上更改设备令牌。

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