0

我正在尝试使用新发布的 Urban Airship 插件在我的 iOS PhoneGap 2.0 应用程序中实现推送通知。当我从提供的示例应用程序将 index.html 加载到我的项目中时,一切正常。但是,当我使用我的应用程序的 index.html 时,该push变量无法访问其原型函数。具体来说,在示例应用程序中:

document.addEventListener("deviceready", function() {
    push = window.PushNotification;
    console.log(typeof window.PushNotification); => 'function'
    console.log(typeof push);                    => 'object'

但是我的应用程序中的相同代码会产生:

    console.log(typeof push); => 'function'

因此push.enablePush()或任何其他原型函数都是不可调用的。我已经尝试过解决方法,但它们最终破坏了设备注册的功能。我不知道为什么会发生这种情况,但我怀疑它可能与deviceready触发事件之前执行的另一个插件或代码冲突。

虽然我确定原因是一个非常具体的问题,但我一般并不真正理解将变量分配给函数对象本身将如何导致变量存储实例化对象。不new就是为了这个吗?为什么它在他们的代码中有效,但在我的代码中无效?

4

1 回答 1

1

想从 UA 团队与您跟进此事。

看一下示例index.html(第 20 行)和PushNotification.js (第 261 行)。访问插件的方式index.html是这样的:

push = window.pushNotification

请注意上的camelCase pushNotification而不是PushNotification在 stackoverflow 问题中。

PushNotification.js中,我们通过调用来初始化插件:

window.pushNotification =  new PushNotification();

所以PushNotification确实是一个函数,只是插件用来引导自身的函数。

纠正这种情况应该可以解决这个问题。

让我知道这是否可以解决问题。

于 2012-09-06T17:31:37.553 回答