2015-07-11 75 views
-1

我試圖在Android應用中實現推送通知。 據我所知,我們需要在設備上安裝發件人和收件人。如何使用Google Cloud Messaging推送通知?

我使用GCM搜索,發現我需要在Google開發控制檯中創建項目。 我得到了一個項目ID和一個API密鑰。

我發現有第三方應用程序(混合面板),可以發送 推送通知與上述信息。我可以使用Google Play向 發送通知給所有應用用戶嗎?

在編程方面,我得到了在Manifest.xml文件

<uses-permission android:name="android.permission.INTERNET" /> 
<!-- GCM connects to Internet Services. --> 
<uses-permission android:name="android.permission.INTERNET" /> 

<!-- GCM requires a Google account. --> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

<!-- Keeps the processor from sleeping when a message is received. --> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

<!-- Creates a custom permission so only this app can receive its messages. --> 
<permission 
    android:name="com.androidexample.gcm.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

<uses-permission android:name="com.androidexample.gcm.permission.C2D_MESSAGE" /> 

<!-- This app has permission to register and receive data message. --> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

<!-- Network State Permissions to detect Internet status --> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<!-- Permission to vibrate --> 
<uses-permission android:name="android.permission.VIBRATE" /> 

和廣播接收器

<receiver 
    android:name="com.google.android.gcm.GCMBroadcastReceiver" 
    android:permission="com.google.android.c2dm.permission.SEND" > 
    <intent-filter> 

     <!-- Receives the actual messages. --> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <!-- Receives the registration id. --> 
     <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

     <category android:name="com.androidexample.gcm" /> 
    </intent-filter> 
</receiver> 

<service android:name="com.androidexample.gcm.GCMIntentService" /> 

從這裏所需的權限,我困惑的「發件人」和「接收器「 部分。

我必須執行GCMBroadcastReceiver嗎?

如果我只想實現接收通知部分,它是怎樣的?

任何對工作代碼示例的引用都會很好。

回答

0

是的,你必須實現GcmBroadcastReceiver類來捕獲來自GCM服務的消息。即使應用程序關閉,接收方的目的也是爲了啓動意向服務。下面是最常見的實現:

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     ComponentName comp = new ComponentName(context.getPackageName(), GcmIntentService.class.getName()); 
     startWakefulService(context, (intent.setComponent(comp))); 
     setResultCode(Activity.RESULT_OK); 
    } 
} 

意圖服務的目的是做什麼用抓GCM消息:

public class GCMIntentService extends IntentService { 
    @Override 
    protected void onHandleIntent(Intent intent) { 
     // Getting GCM message fields 
     Bundle extras = intent.getExtras(); 
     // Doing something with the message. 
     // E.g. showing push notification 
    } 
} 

你可以看到例如this article瞭解詳情。

相關問題