2012-07-31 112 views
12

我正在開發一個GCM應用程序。當設備沒有閒置時,一切工作正常(即按下電源按鈕進行睡眠)。但是,當我在設備空閒時發送消息時,設備不會喚醒。GCM沒有喚醒設備

我有以下完成:

  1. 證實delay_while_idle未設置爲true,在服務器應用程序
  2. 用於每個消息
  3. 重新啓動了設備不同的崩潰鍵多次
  4. 試圖完全從服務器端省略delay_while_idle - 它沒有效果

I我的目標是Android 2.2 api level 8(最低版本),在運行Android 2.3.6的實際設備上測試

設備正在使用wi-fi,沒有sim卡 - 但在運行時沒有空閒地接收消息。

這是客戶機清單允許部分:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<permission 
    android:name="com.tranwall.sdk.device.android.permission.C2D_MESSAGE" 
android:protectionLevel="signature" /> 
<uses-permission android:name="basePackage.android.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />   
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

在此先感謝您的幫助清單文件中

回答

4

問題only.Make確保以下是清單文件GCM的內容

<permission 
    android:name="packagename.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

<uses-permission android:name="packagename.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

<application> 
    <receiver 
     android:name="com.google.android.gcm.GCMBroadcastReceiver" 
     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="packagename" /> 
     </intent-filter> 
    </receiver> 
    <service android:name=".GCMIntentService" android:enabled="true" /> 
</application> 
+0

嗨koti,我有類似的廣播接收器和意圖服務的設置 - 我只發佈我的清單的權限部分。當設備不閒置時,客戶端應用程序可以正常工作。我可以從日誌中看到,即使空閒時收到的消息 - 唯一的問題是傳入的推送消息不會喚醒設備 – Will777 2012-07-31 09:08:58

+0

因此,在空閒模式下,您也收到消息意味着其調用onMessage()方法在那裏你可以寫一些喚醒代碼在這篇文章http://stackoverflow.com/questions/5215367/android-how-can-i-wake-up-the-phone-from-a-hard-sleep-攝像頭 – koti 2012-07-31 09:17:53

+0

謝謝,我將盡力做到這一點 - 我只是覺得GCM客戶端庫會在消息到達時喚醒設備 – Will777 2012-07-31 09:29:51

4

delayWhileIdle=false

delay_while_idle:如果包含,表示如果設備空閒,則不應該立即發送消息。
服務器將等待設備激活,然後僅發送每個* collapse_key *值的最後一條消息。可選的。默認值爲false,並且必須是JSON布爾值。

2

服務器端需要此代碼;

builder.delayWhileIdle(false); 

這意味着沒有在深度睡眠喚醒手機。但收到消息。

然後當喚醒用戶電話時,爲GCMIntentService生成了新的意圖。

相關問題