0

phonegap/cordova とこのプラグインを使用してプッシュ通知をサポートする Android アプリを構築しています。プラグインには、プッシュ通知を受信するたびにトリガーされる onMessage() メソッドがあります。このメソッドは、json オブジェクトを JavaScript プラグインに返します。ただし、ステータスバーの通知がクリックされた場合にのみ、このメソッドがjsonを返すようにします。

これは私の onMessage() メソッドです:

protected void onMessage(Context context, Intent intent) {
    String message = "", title = "", type = "";
    int msgctn = 0, schoolid = 0, studentid = 0, contentid = 0;

    // Extract the payload from the message
    Bundle extras = intent.getExtras();
    if (extras != null) {
      try
      {
          message = extras.getString("message");
          title = extras.getString("title");
          type = extras.getString("type");
          msgctn = Integer.parseInt(extras.getString("msgctn"));
          schoolid = Integer.parseInt(extras.getString("schoolid"));
          studentid = Integer.parseInt(extras.getString("studentid"));
          contentid = Integer.parseInt(extras.getString("contentid"));

        JSONObject json;
        json = new JSONObject().put("event", "message");

        json.put("message", message);
        json.put("type", type);
        json.put("contentid", contentid);
        json.put("schoolid", schoolid);
        json.put("studentid", studentid);

        GCMPlugin.sendJavascript( json );
        // Send the MESSAGE to the Javascript application
      }
      catch( JSONException e)
      {
        Log.e(ME + ":onMessage", "JSON exception");
      }

      Intent notificationIntent = new Intent(context, App4.class);
      notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
      PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

      NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
          .setContentText(message)
          .setContentTitle(title)
          .setSmallIcon(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? R.drawable.icon : android.R.drawable.ic_dialog_info)
          .setAutoCancel(true)
          .setContentIntent(contentIntent)
          .setWhen(System.currentTimeMillis())
          //.setDefaults(Notification.DEFAULT_ALL)
          .setLights(-16711681, 2000, 1000)
          .setNumber(msgctn)
          .setSound(Uri.parse("android.resource://"+ getPackageName() + "/" + R.raw.notifsound));

      Notification notification = builder.build();
      NotificationManager notificationManager = getNotificationManager(context);
      notificationManager.notify(1, notification);

    }

ステータス バーに表示するには、通知オブジェクトを作成する必要がありました。通知をクリックするとインテント App4 が呼び出され、アプリの index.html が表示されますが、JavaScript 関数を実行するか、ペイロードを使用して json オブジェクトをアプリに返したいと考えています。意図ではなく、これを行うために他の関数を呼び出すことができるかもしれませんが、私はAndroidの世界に慣れていないため、その方法がわかりません。

誰でも私を助けてもらえますか?

4

1 に答える 1

1

あなたができることは、あなたが作成しているnotificationIntentインテントにエキストラとしてJSONデータを置くことです。これを行うには、notificationIntentのputExtras()メソッドを呼び出すか、手動で行います。どちらの方法でも、必要なデータをエクストラとしてnotificationIntentに取り込む必要があります。

次に、App4アクティビティが開始したら、onNewIntent()またはonCreate( )のいずれかでインテントをキャッチし、インテントまたはバンドルに必要な追加機能があるかどうかを確認する必要があります。その場合は、貼り付けたonMessage()メソッドで行ったのと同じように、JSONオブジェクトを作成してJavaScriptアプリケーションに渡します。

また、onMessage()メソッドでJSONオブジェクトをJavaScriptアプリケーションに送信するコードを削除する必要があります。

それがお役に立てば幸いです。動作するはずですが、コンピューターから離れているため、実際にコードをテストすることはできません。

于 2013-01-05T20:18:55.797 に答える