Мое приложение Xamarin для Android падает при получении push-уведомления ..!
Вот ошибка:
System.NotSupportedException: Не удалось активировать JNI Handle 0xbee2dcd8 (key_handle 0x1302a92b) типа Java "md53ff9574f15073ce2830b1527af878807 / GcmListener" в качестве управляемого типа "DriversInfo.Droid.GcmListener".---> System.ArgumentNullException: значение не может быть нулевым.
Вот код для получения уведомления (GCMListener):
public override void OnMessageReceived(string from, Bundle data)
{
System.Diagnostics.Debug.WriteLine($"notification data : {data}");
//Log.Debug("MyGcmListenerService", "OnMessageReceived");
var message = data.GetString("message");
System.Diagnostics.Debug.WriteLine("MyGcmListenerService - From: " + from);
System.Diagnostics.Debug.WriteLine("MyGcmListenerService - Message: " + message);
var isSilent = data.GetBoolean("isSilent");
System.Threading.Tasks.Task.Run(async () => await this.Engine.ResumeAsync());
if (!isSilent)
{
NotificationHelper.DisplayNotification(this, "Drivers Info", message);
}
}
И код для отображения уведомления:
public static bool DisplayNotification(Context context, string title, string desc,
NotificationId notificationId = 0)
{
// Set up an intent so that tapping the notifications returns to this app:
Intent intent = new Intent(context, typeof(MainActivity));
intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
// Create a PendingIntent; we're only using one PendingIntent (ID = 0):
const int pendingIntentId = 0;
PendingIntent pendingIntent =
PendingIntent.GetActivity(context, pendingIntentId, intent, PendingIntentFlags.UpdateCurrent);
var builder = new NotificationCompat.Builder(context)
.SetAutoCancel(true)
.SetContentTitle(title)
.SetContentText(desc)
.SetContentIntent(pendingIntent)
.SetSmallIcon(Resource.Drawable.Logo);
//if (Settings.AppAcceptsSoundNotifications)
builder.SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification));
// Build the notification:
var notification = builder.Build();
// Get the notification manager:
var notificationManager = context.GetSystemService(Context.NotificationService) as NotificationManager;
notificationManager?.Notify((int) notificationId, notification);
return true;
}
Я не писал этот код и хотел бы узнать о нем больше!Я немного разочарован новым разработчиком Xamarin / Android, и мне нужна помощь сообщества / объяснения.
Спасибо;)
РЕДАКТИРОВАТЬ
Вотподробнее о сбое приложения (без контекста):
Имя параметра AndroidRuntime: контекст в Autofac.ResolutionExtensions.ResolveService (контекст Autofac.IComponentContext, служба Autofac.Core.Service, System.Collections.Generic.IEnumerable 1[T] parameters) [0x00003] in <ca1ca41f44e0487e9a15b2f64e38c7de>:0 at Autofac.ResolutionExtensions.Resolve (Autofac.IComponentContext context, System.Type serviceType, System.Collections.Generic.IEnumerable
1 [T] параметров) [0x00007] в: 0 в Autofac.ResolutionExtensions.Resolve [TService] (контекст Autofac.IComponentContext, параметры System.Collections.Generic.IEnumerable`1 [T]) [0x00000] в:0 в Autofac.ResolutionExtensions.Resolve [TService] (контекст Autofac.IComponentContext) [0x00000] в: 0 в DriversInfo.Droid.GcmListener..ctor () [0x0000c] в <41c8506acadd4ded8f0bf3c09ac45dbb (0):.Object.6e5c2775-7f90-4dd7-a6af-e9481e583260 (intptr, object []) в Java.Interop.TypeManager.n_Activate (System.IntPtr jnienv, System.IntPtr jclass, System.IntPtr typename_ptr, System.IntPtr signature_ptr, System.IntPtr jobject, System.IntPtr parameters_ptr) [0x000df] в <52508bfa6a8a441688f64accb5488049>: 0 --- Конец внутренней трассировки стека исключений --- в Java.Inpeate.System.IntPtr jnienv, System.IntPtr jclass, System.IntPtr typename_ptr, System.IntPtr signature_ptr, System.IntPtr jobject, System.IntPtr parameters_ptr) [0x00168] в <52508bfa6a8a441688.ae816e3f-b83f-4390-af32-80f1fa8830a2 (intptr, intptr, intptr, intptr, intptr, intptr) в mono.android.TypeManager.n_activate (собственный метод) в mono.android.TypeManager.Aagererj: типа::md5c4b050970b34fabb7ecdb34ca8ce9387.GcmListener. (GcmListener.java:23) в java.lang.reflect.Constructor.newInstance (нативный метод) в java.lang.Class.newInstance (Class.java:16.Thread.Thread.ThreateSerateSecateSerateSerateSerateSecateSecateSerateSerateServiceShate)..java: 3657) в android.app.ActivityThread.access $ 2000 (ActivityThread.java:219)на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1818) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:145) на android.app.ActivityThread.main (ActivityThread.java:6939) в java.lang.reflect.Method.invoke (собственный метод) в java.lang.reflect.Method.invoke (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1404) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199) </p>