使用 Urban Airship & Phonegap,无法注册设备:“Device token is nil”
Posted
技术标签:
【中文标题】使用 Urban Airship & Phonegap,无法注册设备:“Device token is nil”【英文标题】:Using Urban Airship & Phonegap, can't register device: "Device token is nil" 【发布时间】:2012-12-24 08:35:07 【问题描述】:来自 git hub (https://github.com/urbanairship/phonegap-ua-push) 上的最新示例,以及 Phonegap/Cordova 最新 v2.3.0 的全新构建,我们在 ios 注册时遇到了问题带有UA的设备。在我们更新到最新版本之前,我们没有任何问题。我们正在像这样注册设备:
function on_reg(error, pushID)
console.log("UA Registration complete.")
push = window.pushNotification
push.registerEvent('registration', on_reg)
但每次调用该代码时,我们都会收到一条错误消息,提示“设备令牌为零。稍后将尝试注册”。除非那永远不会发生。
这是日志:
2013-01-09 17:38:29.378 分组[271:907] [D] -[UAPush updateRegistration] [第 589 行] 检查注册状态
2013-01-09 17:38:29.380 分组[271:907] [D] -[UAPush updateRegistration] [第 609 行] 设备令牌为零。注册将 稍后再尝试
2013-01-09 17:38:29.744 分组[271:907] [D] +[UAKeychainUtils getDeviceID] [第 275 行] 从钥匙串中检索到设备 ID 信息。
2013-01-09 17:38:29.745 分组[271:907] [D] +[UAKeychainUtils getDeviceID] [第 279 行] 设备 ID 结果不为零。
2013-01-09 17:38:29.746 分组[271:907] [D] +[UAKeychainUtils getDeviceID] [第 288 行] 加载的设备 ID: C1E75722-ED34-4513-BBA5-CB9EDEBBD117
2013-01-09 17:38:29.747 分组[271:907] [D] +[UAKeychainUtils getDeviceID] [第 289 行] 加载的型号名称:iPhone4,1
2013-01-09 17:38:32.724 分组[271:907] [D] -[UAAnalytics requestDidSucceed:response:responseData:] [第 461 行] 分析数据 成功发送。状态:200
我们做错了什么?
【问题讨论】:
【参考方案1】:我将此错误追踪到最新版本的 PhoneGap 中所做的更改:
对于 iOS,device.platform 用于返回“iPhone”、“iPad”或“iPod Touch”——现在它(正确地)返回“iOS”。
这与 PushNotification.js 模块冲突,返回错误信息:
// Registration
PushNotification.prototype.registerForNotificationTypes = function (types, callback)
if(device.platform == "iPhone" || device.platform == "iPad" || device.platform == "iPod touch")
this.call_native(callback, "registerForNotificationTypes", [types])
将其更改为 device.platform == "iOS" 可以解决问题。
Urban Airship,如果你想在https://github.com/urbanairship/phonegap-ua-push/blob/master/ios-sample/www/lib/PushNotification.js 更新你的 git,我相信很多人会很感激!
【讨论】:
您好,您能帮我在 IOS 中使用 urbanairship 在 phonegap 中设置推送通知吗?以上是关于使用 Urban Airship & Phonegap,无法注册设备:“Device token is nil”的主要内容,如果未能解决你的问题,请参考以下文章