使用 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”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Urban AirShip (Swift) 获取 appDelegate

Urban Airship 收不到富推

Urban Airship 在呼叫起飞时坠毁

使用 Urban Airship 跟踪活动用户的推送通知

Urban Airship:默认状态栏通知的自定义图标

使用 Phonegap for Ios 实现 Urban Airship 在注册时卡住了