Android 当应用程序不在 运行 或不在系统托盘中并收到 GCM 通知时应用程序崩溃

Android Application get crashed when application is not running or not in system tray and received a GCM notification

我是 Xamarin 和 android 的新手。我的 Xamarin Android 应用程序遇到问题。应用程序崩溃了。当它关闭并收到来自服务器的 GCM 通知时。我应用了许多配置更改并更新了清单。

<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.packageName.permission.C2D_MESSAGE" />
<permission android:name="com.packagename.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<application android:icon="@drawable/logo" android:label="AppName">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="myKey" />
<supports-screens android:xlargeScreens="true" />

<receiver android:name="com.packagename.PushHandlerService"></receiver>
<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" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <category android:name="com.packagename" />
      <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:scheme="air.com.packagename.gcm"/>
  </intent-filter>
</receiver>
</application>

这是错误日志:PushNotificationRegistationIntentService - 注册 -
Java.IO.IOException: MISSING_INSTANCEID_SERVICE 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c].

我已经解决了这个问题。我创建 IntentService 而不是 Service。 https://developer.android.com/reference/android/app/IntentService.html

我找到了 Intent 服务的示例:https://developer.xamarin.com/samples/monodroid/RemoteNotifications/