0

GCM 経由でデバイス メッセージに送り返すバックエンドにデバイスを登録するサンプルを実行しました。問題は、アプリがアプリで実行されている間に BroadCastreceiver.OnReceive メソッドでこれらのメッセージを受信できたが、アプリを終了して再度プッシュを送信しても何も起こらないことです。

Android システムによってネイティブな方法でプッシュが表示されるようにするには、追加の実装が必要ですか (iOS や Windows Phone のように)。

私はこのガイドに従いましたが、ネイティブの Android OS 通知については何もありません: http://developer.android.com/google/gcm/client.html

ps: クライアント アプリを閉じているときにメッセージを送信すると、まだ成功の応答が返されます:

{"multicast_id":5388850153658301208,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1382683020113430%1a3104c7f9fd7ecd"}]}

ご提案ありがとうございます。

更新 1: マニフェスト ファイル

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
          android:installLocation="auto" 
          package="com.pushtest.droid" 
          android:versionCode="1" 
          android:versionName="1">

  <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />

  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />

  <permission android:name="com.pushtest.droid.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
  <uses-permission android:name="com.pushtest.droid.permission.C2D_MESSAGE" />

  <application android:label="push droid">
    <receiver android:name="com.pushtest.droid.MyGcmBroadcastReceiver"
              android:permission="com.google.android.c2dm.permission.SEND">
      <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        <action android:name="com.google.android.gcm.intent.RETRY" />

        <category android:name="com.pushtest.droid" />
      </intent-filter>
    </receiver>
  </application>
</manifest>
4

1 に答える 1

0

最終的に、Android では自分で PUSH 通知を表示する必要があるという事実を見逃していました。したがって、次のように処理ロジックを実装しました。IntentService がなくてもプッシュが到着したときに通知を確認できるようになりました (構文については申し訳ありませんが、モノドロイドですが、Java の概念は同じです)。

private void HandleMessage(Context context, Intent intent)
{
   var extras = intent.Extras;
   string message = extras.GetString("message");
   string title = extras.GetString("title");
   var notif = new Notification(Resource.Drawable.Icon, title);
   notif.Flags |= NotificationFlags.AutoCancel;
   notif.Defaults = NotificationDefaults.Sound | NotificationDefaults.Vibrate;
   var notificationIntent = new Intent(context, typeof(Activity1));
   notificationIntent.SetFlags(ActivityFlags.SingleTop);
   var contentIntent = PendingIntent.GetActivity(context, 0, notificationIntent, 0);
   notif.SetLatestEventInfo(context, title, message, contentIntent);
   var mNotificationManager = (NotificationManager)context.GetSystemService(Context.NotificationService);
   mNotificationManager.Notify(1, notif);
}
于 2013-10-25T16:24:16.813 に答える