无法在棒棒糖下面接收消息gcm android

时间:2016-11-05 17:00:05

标签: android google-cloud-messaging

我无法在棒棒糖下运行android的设备上收到GCM消息。 推送消息适用于android 5,6和7。 我真的不知道为什么......有我的应用代码:

清单:

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="25"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />

<permission android:name="sbntt.android.xenoss.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="sbntt.android.xenoss.permission.C2D_MESSAGE" />

<application
    android:name="android.support.multidex.MultiDexApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <receiver
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        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" />
            <category android:name="sbntt.android.xenoss" />
        </intent-filter>
    </receiver>
    <service
        android:name="sbntt.android.xenoss.GCMPushReceiverService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>
    <service
        android:name=".GCMRegistrationIntentService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.gms.iid.InstanceID" />
        </intent-filter>
    </service>
    <service
        android:name=".GCMTokenRefreshListenerService"
        android:exported="false">
    </service>

</application>

GCMPushReceiverService类

@Override
public void onMessageReceived(String from, Bundle data) {
    String message = data.getString("message");
    if (Settings.preference != null) {
        if (Settings.preference.getBoolean("notifications", true)) {
            sendNotification(message);
        }
    } else {
        sendNotification(message);
    }
}


private void sendNotification(String message) {
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    int requestCode = 0;
    PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
    Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_menu_youtube)
            .setContentTitle("TITLE")
            .setContentText(message)
            .setAutoCancel(true)
            .setContentIntent(pendingIntent)
            .setSound(sound)
            .setDefaults(Notification.DEFAULT_ALL)
            .setPriority(Notification.PRIORITY_HIGH);

    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0, noBuilder.build());
}

注册工作正常! 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

GCM需要在设备上更新 Play Service 。您可以通知用户更新Play服务或在项目中使用较少的播放服务版本。