0

我使用PHP使用curl發送推送通知,結果似乎微細返回:新的谷歌雲端通訊API

{"multicast_id":2345735671345346,"success":2,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:13456457587969%375ed23445237ecd"},{"message_id":"0:12344526107806%375ed3439fd7ecd"}]} 

所以我猜,發送郵件,問題是BroadcastReceiver子類。

我的廣播接收器代碼:

package com.example.myexample.pushnotifications; 

public class GCMBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); 
     Log.d(TAG, "onReceive method executed properly"); 

     //NotificationManager and NotificationCompat.Builder code to build a notification 
    } 
} 

然後我AndroidManifest.xml的權限:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS"/
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<permission 
    android:name="com.example.myexample.pushnotifications.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="com.example.myexample.pushnotifications.permission.C2D_MESSAGE" /> 

和用於應用標籤內的接收器:

<receiver 
     android:name="com.example.myexample.pushnotifications.GCMBroadcastReceiver" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <category android:name="com.example.myexample.pushnotifications" /> 
     </intent-filter> 
    </receiver> 

的問題是,廣播接收機從不接收消息。

+0

是'com.example.myexample.pushnotifications'您的Android應用的全包的名字嗎? – Eran

+0

com.example.myexample.pushnotifications是BroadcastReceiver子類所在的位置,但活動位於com.example.myexample.activities –

+0

中但是在清單頂部聲明的包名稱是什麼?它是'com.example.myexample'嗎?如果是,那麼除了廣播接收方的完整類名稱之外,這是應在清單的所有GCM相關聲明(權限,意圖過濾器)中使用的軟件包名稱。 – Eran

回答

1

假設應用程序的包com.example.myexample,需要以下變化:

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

<intent-filter> 
    <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
    <category android:name="com.example.myexample" /> 
</intent-filter> 
相關問題