【问题标题】:Handle Android push notifications actions in Xamarin.Forms在 Xamarin.Forms 中处理 Android 推送通知操作
【发布时间】:2017-06-29 17:14:04
【问题描述】:

所以我刚刚使用this guide 在我的 Xamarin.Forms Android 应用程序中实现了 FCM。一切正常,通知到达,它们播放声音,有一个图标等。然后我想在我的通知中添加一个动作,它必须在我的应用程序中打开某个页面。

这就是我的问题所在,Xamarin.Forms 将 所有 Android 内容放在一个 Activity 中。这意味着打开某个页面会导致 MainActivity 的整个 OnCreate 再次加载(以及 LoadApplication 也是如此)。

我的通知

var notificationIntent = new Intent(this, typeof(MainActivity));

notificationIntent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask);
notificationIntent.PutExtras(intent.Extras);

var pendingIntent = PendingIntent.GetActivity(this, 0, notificationIntent, PendingIntentFlags.UpdateCurrent);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
    .SetSmallIcon(Resource.Drawable.icon)
    .SetStyle(new NotificationCompat.BigTextStyle().BigText(text))
    .SetContentIntent(pendingIntent)
    .SetAutoCancel(true)
    .SetPriority((int)NotificationPriority.Max)
    .SetVibrate(new long[] { 0, 250, 100, 250, 0 })
    .SetLights(Color.Red, 1, 250)
    .SetContentTitle("Eindexamen")
    .SetContentText(text);

FCM 负载

{"data":{"message":"Notification Hub test notification", "action":"open-exam", "exam-id":"F50FC23C-B4EE-E611-80C3-000D3A218F79"}}

所以我的问题是,如何在不重新加载 Android 上的整个应用程序的情况下打开 Xamarin.Forms 页面?

【问题讨论】:

    标签: android azure android-activity xamarin.android xamarin.forms


    【解决方案1】:

    修复起来相当容易。

    不要使用ActivityFlags.ClearTopActivityFlags.NewTask,而是使用ActivityFlags.SingleTop

    然后在你的 MainActivity.cs 中重写 OnNewIntent 方法。

    protected override void OnNewIntent(Intent intent)
    {
        base.OnNewIntent(intent);
    
        ProcessPushNotification(intent);
    }
    

    【讨论】:

    • 能否请您解释一下,您的plc页面在哪里?您的代码将如何打开 plc 页面?我想这段代码会把你带到当前的打开页面,你知道我怎么去打开特定的页面吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多