当我将Android N Intent Extras放入推送通知gcm listener中时,它们为空

当我将Android N Intent Extras放入推送通知gcm listener中时,它们为空,android,xamarin,push-notification,xamarin.android,Android,Xamarin,Push Notification,Xamarin.android,我正在Android N中使用推送通知 我在待决意向中添加了额外内容: intent = new Intent(this, typeof(MainActivity)); intent.PutExtra(MessageKey, message); intent.AddFlags(ActivityFlags.ClearTop); pendingIntent = PendingIntent.GetActivity(this, G

我正在Android N中使用推送通知

我在待决意向中添加了额外内容:

intent = new Intent(this, typeof(MainActivity));
            intent.PutExtra(MessageKey, message);

            intent.AddFlags(ActivityFlags.ClearTop);
            pendingIntent = PendingIntent.GetActivity(this, GenerateId(), intent, PendingIntentFlags.OneShot);

            var notificationBuilder =
                new NotificationCompat.Builder(context)
                    .SetSmallIcon(context.ApplicationInfo.Icon)
                    .SetDefaults((int)NotificationDefaults.Sound | (int)NotificationDefaults.Vibrate)
                    .SetContentTitle(title)
                    .SetContentText(message)
                    .SetAutoCancel(true)
                    .SetContentIntent(pendingIntent); 
            notificationManager = (NotificationManager)GetSystemService(Context.NotificationService);

            var notification = notificationBuilder.Build();
            var id = GenerateId();
            notificationManager.Notify(id, notification);
那我需要额外的东西

protected override void OnCreate()
{
    base.OnCreate();
    var message = Intent.Extras.GetInt(MessageKey);
}
在本例中,Extras为null


第二个问题是如何识别何时对4个通知进行分组?

当创建
MainActivity
时,您需要确定它是从通知挂起意图启动还是作为主应用程序启动器启动,等等。。。您可以在
this.Intent?
this.Intent.Extra?
中执行空检查:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    var message = Intent?.Extras?.GetInt("MessageKey");
    if (message != null)
    {
        Log.Debug("SO", message.ToString());
        // activity started from notification, do something with message id...
    }
    ~~~~~
}

创建
MainActivity
时,您需要确定它是从通知挂起意图启动还是作为主应用程序启动器启动,等等。。。您可以在
this.Intent?
this.Intent.Extra?
中执行空检查:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    var message = Intent?.Extras?.GetInt("MessageKey");
    if (message != null)
    {
        Log.Debug("SO", message.ToString());
        // activity started from notification, do something with message id...
    }
    ~~~~~
}

很清楚。我用这种方式检查数据:!Intent.Extras.IsNull()&&Intent.Extras.ContainsKey(“MessageKey”)。但我的问题是Android N(谷歌像素)中的Extras==null。在其他设备中,我可以从intent获得额外信息。@DimaBabich您正在使用
NotificationCompat
,您正在子类化哪个
Activity
类?2天后我必须更新我的问题。当我点击分组通知时,我没有额外内容。我的活动是Xamarin.Forms.Platform.Android.Forms应用程序活动很清楚。我用这种方式检查数据:!Intent.Extras.IsNull()&&Intent.Extras.ContainsKey(“MessageKey”)。但我的问题是Android N(谷歌像素)中的Extras==null。在其他设备中,我可以从intent获得额外信息。@DimaBabich您正在使用
NotificationCompat
,您正在子类化哪个
Activity
类?2天后我必须更新我的问题。当我点击分组通知时,我没有额外内容。我的活动是Xamarin.Forms.Platform.Android.FormsApplicationActivity