2

phonegap プラグインと GCM(Google Cloud Messaging) サービスを使用して、android アプリのプッシュ通知を統合しようとしています。私は基本的に、クライアント側でこのチュートリアルのすべての手順に従いまし。 phonegap プラグイン。

  1. 上記のチュートリアルの「パート 1: PushPlugin を使用するようにアプリを構成する」のように、git phonegap ローカル プラグインを介して phonegap プラグインを追加しました。

  2. 上記のチュートリアルの「パート 2: アプリケーションを Google Cloud Messaging サービスに登録する」で説明したように、index.js ファイルに次のメソッドを追加しました。

     successHandler: function(result) {
          alert('Callback Success! Result = '+result)
     },
     errorHandler:function(error) {
          alert(error);
     },
     onNotificationGCM: function(e) {
          switch( e.event )
          {
             case 'registered':
                if ( e.regid.length > 0 )
                {
                    console.log("Regid " + e.regid);
                    alert('registration id = '+e.regid);
                }
                break;
    
             case 'message':
                // this is the actual push notification. its format depends on the data model from the push server
                alert('message = '+e.message+' msgcnt = '+e.msgcnt);
             break;
    
             case 'error':
                alert('GCM error = '+e.msg);
                break;
    
             default:
               alert('An unknown GCM event has occurred');
               break;
         }
    }
    

アプリケーション サーバーから通知を送信するには、HTTP POST を使用してhttps://android.googleapis.com/gcm/sendにリクエスト ボディを json 形式で送信します。

{
    “registration_ids” : ["APA....."],
    “data” : {
           “title” : “My Title”,
           “message” : “My Msg”,
           “msgcnt” : “1"
    }
}

デバイスで通知を正しく受信しています。コードに何が欠けているかはわかりませんが、これらの問題が発生しています。

  1. デバイスの通知領域に、複数のメッセージが次々に送信されたときに最後のメッセージしか表示されません。最後のメッセージが古いメッセージを上書きしているようです。すべてのアラートが送信されるたびにデバイスにリストされるようにします。

  2. デバイスがロックされている場合、画面上部に通知が表示されません。

これらの問題を解決するにはどうすればよいですか? 私はモバイル開発に不慣れです。これについて助けていただければ幸いです。前もって感謝します!

4

2 に答える 2

0

デバイスがロックされたときに通知を取得するため。

public abstract class WakeLocker { private static PowerManager.WakeLock wakeLock;

    public static void acquire(Context context) {
        if (wakeLock != null)
            wakeLock.release();

        PowerManager pm = (PowerManager) context
                .getSystemService(Context.POWER_SERVICE);
        wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                | PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.ON_AFTER_RELEASE, "WakeLock");
        wakeLock.acquire();
    }

    public static void release() {
        if (wakeLock != null)
            wakeLock.release();
        wakeLock = null;
    }
}

また、マニフェストに次の権限を追加します。

 <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
于 2013-10-05T04:26:23.860 に答える
0

おそらく通知メソッドで同じIDを使用しているため、新しい通知が古い通知を上書きします。一意の ID を使用すると、複数の通知が届きます。

2 番目の質問については、 こちらをお読みください

于 2013-10-05T04:29:27.043 に答える