应用程序关闭时(非强制停止),无法接收GCM通知。

3

我的应用在前台和后台时都可以愉快地接收到通知,但是当应用程序被杀死时,在某些手机(例如小米型号的手机,例如mi3等)上无法接收通知。

GCM消息0:1434141725194227%03b66390f9fd7ecd 广播意图回调:result = CANCELLED forIntent {act = com.google.android.c2dm.intent.RECEIVE pkg =(已装有额外内容)}

虽然我在其他手机上(如nexus、三星等)也能收到通知。 是否有人也遇到了类似的问题? 有人能解释一下我错在哪里吗?

这是我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="<package_name>">

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

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="<package_name>.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />

<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>


<application
    android:name="<package_name>.ApplicationSingleton"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <activity
        android:name="<package_name>.ui.activity.ReferralActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustResize">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    <receiver
        android:name="<package_name>.gcm.GcmBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="<package_name>" />
        </intent-filter>

        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
            <category android:name="<package_name>"/>
        </intent-filter>

    </receiver>

    <service android:name="<package_name>.gcm.GcmIntentService" />

    </activity>

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />


</application>


您的小米设备中是否已安装了Google Play服务? - Kay_N
是的,Google Play已安装,这就是为什么应用程序正在运行时我会收到通知,但应用程序被杀死时不会收到通知。 - user3265443
猜测这是小米的一个bug。请参阅此链接:http://forum.xda-developers.com/xiaomi-mi-3/help/greenify-gcm-notification-t2883458 - Kay_N
@user3265443 我也遇到了同样的问题。你解决了吗?这些手机有一个“自启动”功能,如果启用了该功能,则可以确保在应用程序从最近使用的应用程序中删除或以其他方式终止时仍会收到通知。我不知道是什么原因导致自启动功能自行启用。如果您已经解决了这个问题,请帮助我一下。 - Nitesh Kumar
https://dev59.com/tpHea4cB1Zd3GeqPtcHI?answertab=active#tab-top - Nikhil Borad
1个回答

0

自启动可能是最好的MIUI功能之一,但默认情况下未启用,应该启用。

自启动是什么?它基本上会在手机启动时启动您选择的应用程序,因此您永远不会错过任何通知或更新。

要为您的应用程序启用自启动,请按照以下步骤操作:

  1. 从应用屏幕中点击安全应用程序。

如果您从设置菜单进入,您将找不到此选项,您必须直接点击应用程序图标。

打开安全应用程序: Open Security App

  1. 进入安全应用程序后,点击权限。

  2. 点击自启动

  3. 切换您想要启用自启动的应用程序

  4. 重新启动您的手机。

现在您已经完成了自启动的设置!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接