私のアプリケーションは、私が送信した通知を受信していないようです.azureサイト内のデバッグモードを使用して、テスト通知を送信しています.ハブはこれらの通知を受信していますが、電話のアプリケーションは受信していません。インターネットが実行されており、USB デバッグがオンになっており、「herpderp 通知を受信しました」というログが表示されません。
アプリを通知ハブに正常に登録し、次のコードで応答を待っています。
gcm = GoogleCloudMessaging.getInstance(this);
String connectionString = "***THIS IS where my connection string is, and it doesn't contain errors";
hub = new NotificationHub("denlillemandhub", connectionString, this);
NotificationsManager.handleNotifications(this, SENDER_ID, MyHandler.class);
registerWithGcm();
registerWithGcm() メソッド:
private void registerWithGcm() {
new AsyncTask() {
@Override
protected Object doInBackground(Object... params) {
try {
registrationId = gcm.register(SENDER_ID);
Log.i(TAG, "Registered with id: " + registrationId);
} catch (Exception e) {
return e;
}
return null;
}
protected void onPostExecute(Object result) {
Log.d("Done", "attempt to register was done loading");
/**lblRegistration.setText(mRegistrationId);
lblStatus.setText(getResources().getString(R.string.status_registered)); */
};
}.execute(null, null, null);
}
MyHandler クラス (notificationHandler をパラメーターとして指定):
import com.microsoft.windowsazure.notifications.NotificationsHandler;
public class MyHandler extends NotificationsHandler
{
public static final int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
NotificationCompat.Builder builder;
Context ctx;
@Override
public void onReceive(Context context, Bundle bundle) {
ctx = context;
String nhMessage = bundle.getString("msg");
Log.d("line 27", "onReceive");
sendNotification(nhMessage);
}
private void sendNotification(String msg) {
Log.d("line 32", "sendNotification");
mNotificationManager = (NotificationManager)
ctx.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
new Intent(ctx, ToDoActivity.class), 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(ctx)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Notification Hub Demo")
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(msg))
.setContentText(msg);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
}
最後に(私のandroidManifestは表示権限のみ):
<uses-permission android:name="android.permission.INTERNET"/>
<permission android:name="com.example.denlillemand.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.denlillemand.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<receiver android:name="com.microsoft.windowsazure.notifications.NotificationsBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.example.denlillemand" />
</intent-filter>
</receiver>
私のサージションは、サーバー側のスクリプトが正しく、GCM / Azure API キー/設定がすべて正しいと仮定することです。明らかに、通知ハブは想定どおりに受信しますが、GCM が登録済みのデバイスに配信しないか、デバイスが通知を受信しても正しく処理していないようです。
私は本当にこれに苦労していたので、修飾された推測をするためにこれをすべて読みたいと思っている人に感謝します。
ありがとう。