如果在我打开通知之前关闭了应用程序,则不会处理HandleNotificationOpened

时间:2019-08-26 13:57:58

标签: c# xamarin.forms cross-platform onesignal

HandleNotificationOpened如果应用程序在后台运行或正在运行,则可以正常运行,但是如果我在应用程序关闭时打开通知,则不会触发。

我已尝试通过SecureStorage保留事件中的数据,因为我不确定事件是否在正确的时间运行,或者是否在错误的时间运行。

public App()
{
    OneSignal.Current.StartInit("onesignal-id").HandleNotificationOpened(HandleNotificationOpened).HandleNotificationReceived(HandleNotificationReceived).EndInit();
}


private async void HandleNotificationOpened(OSNotificationOpenedResult result)
{
    var data = result.notification.payload.additionalData;

    if (data != null)
    {
        data.TryGetValue("Title", out object Title);
        data.TryGetValue("Conteudo", out object Conteudo);
        data.TryGetValue("Link", out object RLink);
        string lastvar = (Title.ToString().GetHashCode() + Conteudo.ToString().GetHashCode() + RLink.ToString().GetHashCode()).ToString();

        if (!ChecarDB(lastvar))
        {
            InserirDB(Title.ToString(), Conteudo.ToString(), RLink.ToString());
        }

        await SecureStorage.SetAsync("UrlFromPush", RLink.ToString());
        var page = new MainPage();
        MessagingCenter.Send<MainPage>(page, "MudarURL");
    }
}

预期结果是应用程序正确处理了事件,根本没有错误消息。

2 个答案:

答案 0 :(得分:0)

应用关闭后将不会调用此方法。

尽管我没有使用 OneSignal 来推送通知,但根据Android / iOS系统的通知处理机制,当应用程序关闭时,当收到远程通知时,点击通知将重新启动该应用,并且通知处理机制由系统托盘处理。

因此不会调用HandleNotificationOpened方法。

答案 1 :(得分:0)

我已使用URI方案访问早期初始化背景数据解决了此问题,将HandleNotificationOpened的{​​{1}}方法替换为自定义格式设置方法,这就是我得到预期结果的方式。