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

stackoverflow の質問とは対照的に、キャメルケースonに注意してください。pushNotificationPushNotification

ではPushNotification.js、次を呼び出してプラグインを初期化しています。

window.pushNotification =  new PushNotification();

これPushNotificationは確かに関数であり、プラグインがそれ自体をブートストラップするために使用する関数です。

ケースを修正すると、この問題が解決するはずです。

これで問題が解決するかどうかお知らせください。

于 2012-09-06T17:31:37.553 に答える