我正在使用OneSignal推送通知服务,我想在通知点击时直接打开应用程序到特定页面。我通过数据发送页面。我尝试了navigator.push,但它不工作,我猜是因为上下文问题。我在登录后调用_initializeonesignal(),其中包含onesignal init和以下代码。
OneSignal.shared.setNotificationOpenedHandler((notification) {
var notify = notification.notification.payload.additionalData;
if (notify["type"] == "message") {
//open DM(user: notify["id"])
}
if (notify["type"] == "user") {
//open Profileo(notify["id"])
}
if (notify["type"] == "post") {
//open ViewPost(notify["id"])
}
print('Opened');
});
字符串
6条答案
按热度按时间jqjz2hbq1#
您需要在主应用程序scaffold中注册一个全局Navigator句柄--然后就可以在通知处理程序中使用它。
所以-在我们的应用程序中,在我们的主应用程序中,我们有:
字符串
关键是navigatorKey:part,并将其保存到您可以访问的其他地方。
然后在您的处理程序中:
OneSignal.shared. setNotificationOpenedString(_String NotificationOpened);.
型
这应该能起作用--反正对我们来说也是这样:)
mm9b1k5b2#
很简单,通过使用onesignal,您可以创建从Kotlin到flutter的系统调用
在我的例子中,我必须从WordPress中的onesignal的通知中获取URL中的数据:
字符串
这是我从onCreate获取的数据,但只有在点击通知时,我才会获取**“intent”**数据,然后将其发送到以下类中的flutter代码:
型
在这里,我从一个WordPress URL中获取数据,4 ed '/'后面的最后一个词是帖子的ID。
现在如何使用它和调用它,因为我创建了它静态我将使用它在我的代码时,第一个页面加载,
型
此页面将从我的WordPress API加载数据。
所以从数据库加载数据后,我会检查id的值,并导航到文章页面,我的主页中的示例:
型
秘密是在Kotlin或Java中,通过使用从Kotlin到Fluter或从Java到Flutter的调用,我想你将不得不对iOS做同样的事情,我会留下一篇文章来帮助我。
型
jv4diomz3#
我解决了同样的问题,如下所示:
在主屏幕文件MyApp.dart中
字符串
[*] OneSignalWapper.dart**:
型
tcbh2hod4#
您可以使用此代码:
字符串
MaterialApp(home:SplashScreen(),navigatorKey:navigatorKey,)
bprjcwpo5#
我找到了解决方案:
在主屏幕上设置处理程序。
第一:
字符串
第二:
型
ezykj2lf6#
RiverPods解决方案
主要:
字符串
自定义 Package 文件.
型