-1
Я пытаюсь GCM в своем проекте, но я не получаю. для отладки Я поставил Toast в OnReceive, но опять же это не работает.OnReceive не работает в Android GCM
Я использую genymotion, но когда я устанавливаю APK на мобильном устройстве, он работает нормально.
Мой код
Intent RegInt = new Intent("com.google.android.c2dm.intent.REGISTER");
RegInt.putExtra("app", PendingIntent.getBroadcast(Home.this, 0, new Intent(), 0));
RegInt.putExtra("sender", "123456");
startService(RegInt);
Мои OnReceive ли
@Override
public void onReceive(Context arg0, Intent arg1) {
String action = "";
action = arg1.getAction();
String regId = "";
if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) {
regId = arg1.getStringExtra("registration_id");
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(arg0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("reg", regId);
editor.putString("valid", "1");
editor.commit();
Toast.makeText(arg0, "Action: " + arg1.getAction(), Toast.LENGTH_SHORT).show();
}
}
Мои Manifest Похож
<receiver
android:name="my.package.riyaz.MyReceiver"
android:enabled="true"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="my.package.riyaz" android:scheme="package" />
</intent-filter>
</receiver>
Я думаю, вы с вашей интеграцией идут не так. Обратитесь к этому https://developer.android.com/google/gcm/client.html – Fahim
. Я понял одно: он отлично работает на мобильных устройствах, но не работает на genymotion. – Riyaz
GCM не работает на эмуляторе, вам нужно реальное устройство для регистрации в GCM затем получите регистрацию. – MichaelP