0

私は Android + Phonegap + jQuery-Mobile アプリに取り組んでおり、プッシュ通知を実装するために Pusher を使用することを計画しています。このリンクから開始プロジェクトを使用してプッシャーサービスをテストしていました: http://blog.pusher.com/pusher-on-phonegap-for-android/

プロジェクトの詳細:

Android API ターゲット 15

コルドバ 2.3.0

プッシャー JavaScript ライブラリ v1.12.7

jQuery Mobile 1.3.0 (最終リリース)

必要なすべての .java ファイルと .js ファイルをプロジェクトにコピーしました。プッシャー接続をインスタンス化する方法は次のとおりです。

  var CONFIG = {
                    PUSHER: {
                    APP_KEY: 'my-key'
                    }
            };
         // Connect
            var pusher = new Pusher(CONFIG.PUSHER.APP_KEY);
            pusher.connection.bind('state_change', connectionStateChange);

            function connectionStateChange(state) {
                $('#connectionStatus').html(state.current);
            }

            // Subscribe
            var channel = pusher.subscribe('my-channel');
            channel.bind('pusher:subscription_succeeded', subscriptionSucceeded);

            function subscriptionSucceeded() {
                $('#subscriptionStatus').html('succeeded');
            }

            channel.bind('my-event', handleMyEvent);

            function handleMyEvent( data ) {
            //  window.plugins.statusBarNotification.notify("You have a notification", data.message);
              $('#pusher-data').append('<pre>'+data.message+'</pre>');
            }

しかし、プロジェクトを実行すると、Pusher 接続に関するログ エントリは表示されませんが、Logcat に次のようなものが表示されます。

03-01 23:11:23.997: E/Web Console(3631): Uncaught TypeError: Object function (url) {

03-01 23:11:23.997: E/Web Console(3631):         // get a new websocket object from factory (check com.strumsoft.websocket.WebSocketFactory.java)

03-01 23:11:23.997: E/Web Console(3631):         this.socket = WebSocketFactory.getInstance(url);

03-01 23:11:23.997: E/Web Console(3631):         // store in registry

03-01 23:11:23.997: E/Web Console(3631):         if(this.socket) {

03-01 23:11:23.997: E/Web Console(3631):             WebSocket.store[this.socket.getId()] = this;

03-01 23:11:23.997: E/Web Console(3631):         } else {

03-01 23:11:23.997: E/Web Console(3631):             throw new Error('Websocket instantiation failed! Address might be wrong.');

03-01 23:11:23.997: E/Web Console(3631):         }

03-01 23:11:23.997: E/Web Console(3631):     } has no method '__addTask' at file:///android_asset/www/pusher.js:1288

私はこの時点で本当に立ち往生しています。どんな助けでも大歓迎です。

4

1 に答える 1

1

ここで推奨される解決策は、WebSocket Java ラッパーの使用をやめ、代わりに HTTP フォールバックを使用することです。

Pusher JavaScript ライブラリの新しいベータ版は、 http://js.pusher.com/2.0.0-pre/pusher.min.jsから入手できます。

HTTPS 経由: https://d3dy5gmtp8yhk7.cloudfront.net/2.0.0-pre/pusher.min.js

PhoneGap で追加のテストを行う必要がありますが、HTTP フォールバックの方がはるかに優れたソリューションであるはずです。

于 2013-03-02T16:13:32.510 に答える