当前位置: 首页 > 知识库问答 >
问题:

Xamarin Forms - 如何在应用程序关闭时单击通知后打开特定页面?

和季
2023-03-14

我实际上正在处理需要推送通知的Xamarin Forms应用程序。我使用 Plugin.PushNotification 插件。

当应用程序在前台运行或处于睡眠状态(OnSap)时,当我单击收到的通知时,打开特定页面没有问题。但我想知道当应用程序关闭时如何做到这一点。谢谢!

共有2个答案

濮俭
2023-03-14

不幸的是,这两种平台都没有简洁的答案。一般来说,你需要告诉操作系统在推送通知后启动应用程序时该做什么。在这两种平台上,您还应该考虑您的目标API级别,否则它将无法工作,甚至会使应用程序崩溃。

在iOS上,您需要在AppDelegate中适当地实现此方法:< code > finished launching(ui application应用程序,ns dictionary launch options)。< code>launchOptions将具有来自推送通知的有效负载,供您确定如何处理它(例如,打开哪个页面)。关于iOS的更多信息,Xamarin的文档是一个很好的起点。

Android具有更复杂的拓扑结构,API级别之间的差异更大,无论您使用的是GCM/FCM,还是需要更多的代码组件。然而,要直接回答这个问题,您需要在主要活动的<code>OnCreate(Bundle savedInstanceState)Intent.Extras中找到。同样,Xamarin的文档有一个很好的演练。

最后,请注意,您正在使用的Plugin.PushNotification库已被弃用。我建议您要么尽快更改您的库和/或实现。库已被弃用的部分原因是因为Google已弃用底层Google Cloud Messaging(GCM)服务,该服务将于2019年4月11日停用。

单于越
2023-03-14

我终于自己找到了答案,我想分享给大家,以防有人需要。

Nota bene:根据插件的官方文档,它是Xam。不推荐使用的Plugin.PushNotification。我用这个插件的新版本,plugin。PushNotification在Android上使用FCM,在iOS上使用APS。

在应用正在运行、处于睡眠状态或关闭状态时打开通知没有显著差异。只需在 OnCreate 方法中添加下一个回调方法 (MyProject.Droid

CrossPushNotification.Current.OnNotificationOpened += (s, p) =>
{
    // manage your notification here with p.Data
    App.NotifManager.ManageNotif(p.Data);
};

公共部分

App.xaml.cs

// Static fields
// *************************************

public static NotifManager NotifManager;

// Constructor
// *************************************

public App()
{
    ...
    NotifManager = new NotifManager();
    ...
}

NotifManager.cs

public class NotifManager
{
    // Methods
    // *************************************

    public void ManageNotif(IDictionary<string, object> data)
    {
        // 1) switch between the different data[key] you have in your project and parse the data you need
        // 2) pass data to the view with a MessagingCenter or an event
    }
}
 类似资料:
  • 当用户在我的通知中单击一个按钮时,我正试图打开,而该应用程序仅在后台运行并提供服务。单击按钮时,这些行在类中被触发: 我已经检查过了,这些行被触发了,所以对按钮的点击做出反应没有问题,但是不会打开。 有什么建议吗?为什么这对我不起作用,我怎么能让它起作用? 我被要求提供更多的代码,因此在我的

  • 我知道这个问题似乎重复,但为了我的要求,我已经在网上搜索了很多帖子,但没有一个对我有效。 我的要求 为此,我尝试了以下场景 情景1 使用将通知数据从传输到Launcher/Main活动,并根据bundle数据重定向到特定活动/片段 情景3 通过使用 按照上面的场景,当应用程序打开时,一切工作都很好,但如果我的应用程序关闭了,则意味着它总是重定向到main/launcher活动

  • 我在通知中收到了一个包名,我想在点击通知后打开play store中的特定应用程序。如何继续呢?

  • 我正在工作的应用程序中,我被要求显示通知。对于通知,我使用的是FireBase云消息(FCM)。我能够得到通知,当应用程序在后台。 2.)MyFirebaseInstanceIDService 这是我在MyFirebaseMessagingService类中为onMessageReceived()方法编写的代码示例。

  • 使用以下代码时: 以下用户行为创建了一种不一致的通知方法: null null