GCM无法启动服务意图

时间:2018-07-05 21:58:20

标签: android xamarin.android google-cloud-messaging

从android P开始,我的应用无法注册GCM ID。我的PushManager代码看起来像

IdGlobal

我的清单:

try
        {
            GcmClient.CheckDevice(context);
            GcmClient.CheckManifest(context);
            String[] senderIds = GcmBroadcastReceiver.SENDER_IDS;
            foreach (String id in senderIds)
            {
                System.Diagnostics.Debug.WriteLine("sender id = " + id);
            }

            GcmClient.Register(context, senderIds);

            if (GcmClient.IsRegistered(context))
            {
                System.Diagnostics.Debug.WriteLine("push registration successfull: " +
                                                   GcmClient.GetRegistrationId(context));
            }
        }
        catch (Exception e)
        {
            System.Diagnostics.Debug.WriteLine("push registration failed: " + e.Message.ToString());
        }

每当我尝试注册或注销时,都会出现此错误:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.app" android:versionName="1.8.5" android:versionCode="97">
    <uses-sdk android:minSdkVersion="16" />
    <application android:label="My app" android:icon="@mipmap/icon" android:theme="@style/Theme.App" android:hardwareAccelerated="true" android:windowSoftInputMode="stateHidden|adjustResize" android:name="android.support.multidex.MultiDexApplication">
        <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent" />
    </application>
    <permission android:name="com.rotogrinders.rg_lineups.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="com.rotogrinders.rg_lineups.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <permission android:name="android.permission.STATUS_BAR_SERVICE" android:protectionLevel="signature" />
<!-- For Google Play Services -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <action android:name="com.google.android.c2dm.intent.REGISTER" />
    <service android:name="com.google.android.gms.analytics.AnalyticsService" android:enabled="true" android:exported="false" />

我发现运行较旧操作系统的设备可以正常运行。到目前为止,我遇到的唯一问题是android P预览。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可能正在使用旧版本的GCM。

您可以升级到GCM 11或更高版本,甚至更好,然后迁移到FCM。 (现已弃用GCM)

(最新的GCM版本是15.0.1:com.google.android.gms:play-services-gcm:15.0.1)