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

如果应用程序在后台或正在运行,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");

    }

}

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


慕妹3146593
浏览 67回答 2
2回答

Helenr

当应用程序关闭时,不会调用此方法。虽然我没有使用OneSignal来推送通知,但是根据Android/iOS系统通知处理机制,当app关闭时,当收到远程通知时,点击通知会重启app,通知处理机制是通过系统托盘。所以该HandleNotificationOpened方法不会被调用。

暮色呼如

我已经使用 URI 方案来访问早期初始化后台数据解决了这个问题,用自定义格式化方法替换了 方法HandleNotificationOpened,Intent?.Data?.EncodedQuery;这就是我得到预期结果的方式。
打开App,查看更多内容
随时随地看视频慕课网APP