2016-01-23 75 views
0

我的问题是,我的GCM工作得很好,我收到了通知,但是当我的手机的屏幕是关闭我的GcmReceiver停止工作,我没有收到多个通知为什么屏幕关闭时GcmReceiver停止工作?

的为什么发生这种情况的任何想法?提前致谢!

这是我的manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="schan.main" 
> 
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17"/> 
<permission android:name="schan.main.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="schan.main.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:persistent="true" 
    android:theme="@style/Theme.Schan"  > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <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" /> 
      <category android:name="schan.main" /> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
     <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
    </receiver> 
    <service 
     android:name="schan.main.MyGcmListenerService" 
     android:exported="false"> 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </service> 
    <service 
     android:name="schan.main.MyInstanceIDListenerService" 
     android:exported="false"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.iid.InstanceID" /> 
     </intent-filter> 
    </service> 
    <service 
     android:name="schan.main.RegistrationIntentService" 
     android:exported="false"> 
    </service> 
    <activity 
     android:name=".LoginActivity" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/login" 
     android:parentActivityName=".MainActivity" 
     android:theme="@style/Theme.Schan" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="schan.main.MainActivity" /> 
    </activity> 
    <activity 
     android:name=".SigupActivity" 
     android:label="@string/joinus" 
     android:parentActivityName=".MainActivity" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="schan.main.MainActivity" /> 
    </activity> 
    <activity 
     android:name=".Alert" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" 
     android:label="@string/title_activity_alert_dialog" > 
    </activity> 
</application> 

更新

我找到了我真正的问题,这是一个how can i put this configuration on my huawei cellphone?

+0

@ d.datul1990不,我没有,因为有必要改变手机的配置,关于如何以编程方式更改配置给华为手机的信息太少了**注意:**我的问题仅限于huawey手机 **阅读:** https://telegram.org/faq#notification-problems – hvar90

+0

所以可能是设备的具体问题? –

+0

@ d.datul1990是sir “华为和小米设备有干扰通知服务的恶意任务杀手服务” – hvar90

回答

0

首先,你需要'清醒广播接收器'它有助于实现的通用模式引导接收设备唤醒事件的BroadcastReceiver,然后将工作传递给服务,同时确保设备在转换过程中不会回到睡眠状态。此课程负责为您创建和管理部分唤醒锁;您必须请求WAKE_LOCK权限才能使用它。

其次,您需要使用'delay_while_idle',这表示如果设备空闲,消息不会立即发送。服务器将等待设备激活,然后只发送每个collapse_key值的最后一条消息。默认值是false。

+0

感谢您的回答,第一部分您说我需要唤醒广播接收器但我使用com.google .android.gms.gcm.GcmReceiver,所以这个接收器包含Wakeful广播接收器,它将工作传递给schan.main.MyGcmListenerService,我也使用了WAKE_LOCK权限,所以问题可能在于com.google.android.gms.gcm .GcmReceiver但我不能修改这个接收器,因为这是GCM android的接收器,对于第二部分,我使用delay_while_idle = true和delay_while_idle = false进行了测试,但它不能在两种方式上工作 – hvar90