设备令牌在开发中注册良好,但不是生产

dav*_*s81 5 apple-push-notifications urbanairship.com ios phonegap-plugins cordova

我正在为iOS和Android创建一个PhoneGap应用程序.我已经让Android工作得很好,但是在iOS中从开发转换到生产时遇到了麻烦.没有为具有生产adHoc构建的设备注册设备令牌.我已经筋疲力尽了我能想到的每一件事.这是我到目前为止所做的:

  1. 删除了我计算机上的所有证书和配置文件,尝试重新开始.
  2. 在我的应用程序特定应用程序ID(不是通配符应用程序ID)上启用生产APNS并将其导入我的钥匙串.
  3. 使用生产ssl证书和正确的应用程序ID为adHoc分发创建新的生产配置文件.选中以确保在配置文件中设置了aps-environment.
  4. 导入新的配置文件并将应用程序设置为在我的项目和目标的构建设置中使用正确的应用程序.
  5. 导出p12文件以导入UA.
  6. 在UA集上删除并创建了一个用于生产用途的新应用程序.上传p12文件并打开Push Debug模式.
  7. 确信的AirshipConfig.plist有正确的生产钥匙,并APP_STORE_OR_AD_HOC_BUILD设置为YES.
  8. 存档应用程序并将其导出以进行adhoc分发并通过iTunes将其加载到手机上.

当我第一次在设备上运行应用程序时,所有内容都完全重做.这是我在控制台中得到的:

Mon Sep 17 12:48:00 unknown XXXXXXXXX[5039] Warning: Multi-tasking - Device: NO, App: YES

Mon Sep 17 12:48:05 unknown XXXXXXXXX[5039] Warning: Reachability Flag Status: -R -----l- networkStatusForFlags
Mon Sep 17 12:48:06 unknown XXXXXXXXX[5039] Warning: [M] = -[UAPush updateRegistration] [Line 583] Checking registration state
Mon Sep 17 12:48:06 unknown XXXXXXXXX[5039] Warning: [M] = -[UAUser listenForDeviceTokenReg] [Line 969] ListenForDeviceTokenReg
Mon Sep 17 12:48:06 unknown XXXXXXXXX[5039] Warning: [M] = -[UAUser retrieveRequestSucceeded:] [Line 911] User retrieved: 200:{
"user_id" : "XX-XXXXXXXXXXXXXXXXX",
"user_url" : "https://device-api.urbanairship.com/api/user/XX-XXXXXXXXXXXXXXXXX/",
"tags" : [ ],
"device_tokens" : [ ],
"device_pins" : [ ],
"apids" : [ ],
"has_active_subscription" : false,
"subscriptions" : [ ],
"ua_device_ids" : [ "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" ],
"badge" : 0,
"server_time" : "2012-09-17 17:48:02"
}
Mon Sep 17 12:48:06 unknown XXXXXXXXX[5039] Warning: [M] = -[UAUser updateDefaultDeviceToken] [Line 1016] Updating device token
Mon Sep 17 12:48:06 unknown XXXXXXXXX[5039] Warning: [M] = -[UAUser updateDefaultDeviceToken] [Line 1021] Skipping device token update: no token, already up to date, or user is being updated.

Mon Sep 17 12:48:21 unknown XXXXXXXXX[5039] Warning: [M] = +[UAKeychainUtils getDeviceID] [Line 269] Retrieved device id info from keychain.
Mon Sep 17 12:48:21 unknown XXXXXXXXX[5039] Warning: [M] = +[UAKeychainUtils getDeviceID] [Line 273] Device ID result is not nil.
Mon Sep 17 12:48:21 unknown XXXXXXXXX[5039] Warning: [M] = +[UAKeychainUtils getDeviceID] [Line 282] Loaded Device ID: XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Mon Sep 17 12:48:21 unknown XXXXXXXXX[5039] Warning: [M] = +[UAKeychainUtils getDeviceID] [Line 283] Loaded Model Name: iPhone1,2
Mon Sep 17 12:48:21 unknown XXXXXXXXX[5039] Warning: [M] = -[UAAnalytics requestDidSucceed:response:responseData:] [Line 467] Analytics data sent successfully. Status: 200
Run Code Online (Sandbox Code Playgroud)

我清空了身份证号码和应用名称.

上面的消息"跳过设备令牌更新:没有令牌,已经是最新的,或者用户正在更新".对我来说似乎很奇怪.这是一个新创建的UA应用程序,带有新密钥和所有内容.我还用我的开发配置文件,按键和所有内容加载它,它工作得很好.它只是不在生产运行中注册设备令牌.

任何帮助表示赞赏.我已经检查了每个设置,据我所知,我的所有配置文件,密钥,权利都已正确设置.我在WiFi上运行,因为我使用的手机只是一部没有有效运营商服务的测试手机.

小智 2

我想,我现在已经解决了这个问题两次,尽管我不能 100% 确定核心问题是什么 - 我认为测试方式存在问题。

尝试让 UA Push Sample 应用程序正常工作:

  • 下载 UA PushSample 应用程序。
  • 使用您的应用程序/秘密组合更新 AirshipConfig.plist 文件
  • 使用正确的捆绑包 ID、配置文件等更新构建。
  • 从您的设备中删除您的应用程序(当您尝试构建 PushSample 应用程序时,如果它仍然存在且具有相同的包标识符,它们将会发生冲突。
  • 编译并运行推送示例应用程序。
  • 在日志中查找令牌,并检查 UA 仪表板(查找 # 个令牌,或仅发送广播警报)。

您还有同样的问题吗?就我而言,两次它都消失了并成功注册了令牌。我认为由于某种原因,错误配置的证书/配置文件阻止了令牌的正确创建。当我修复它们时,为时已晚,因为 UA 库认为它已经注册,因此跳过了该部分。日志中的这一行让我怀疑:

在应用程序初始化时禁用检查应用程序前台的注册

现在 2 for 2,当我将正确的证书/捆绑包/配置文件放入干净的 PushSample 应用程序中时,它可以正常工作