Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GCM not waking up device

I developing a GCM application. Everything works fine when the device is not idle (i.e. sleeping by pressing the power button). However, when I send the message when the device is idle the device does not wake up.

I have done the following:

  1. Verified that delay_while_idle is not set to true in the server app
  2. Used a different collapse key for each message
  3. Rebooted the device multiple times
  4. Tried omitting the delay_while_idle completely from the server side - it has no effect

I am targetting Android 2.2 api level 8 (lowest version), testing on an actual device running Android 2.3.6

Device is using wi-fi, there is no sim card - but receives messages fine while running and not idle.

This is the client manifest permission section:

<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" /> 

Thanks in advance for any help

like image 597
Will777 Avatar asked Jul 31 '12 08:07

Will777


2 Answers

problem within manifest file only.Make sure the following are the contents of manifest file 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>
like image 125
koti Avatar answered Sep 24 '22 23:09

koti


delayWhileIdle=false

delay_while_idle : If included, indicates that the message should not be sent immediately if the device is idle.
The server will wait for the device to become active, and then only the last message for each *collapse_key* value will be sent. Optional. The default value is false, and must be a JSON boolean.

like image 31
jnagjaeho Avatar answered Sep 24 '22 23:09

jnagjaeho