【发布时间】:2019-04-29 07:34:37
【问题描述】:
我正在使用FirebasePushNotificationPlugin 在Xamarin.Forms 中开发firebase 推送通知。不知何故,我在Application 文件中收到了有关 android 项目的通知以及数据
CrossFirebasePushNotification.Current.OnNotificationReceived += (s, p) =>
{
//System.Diagnostics.Debug.WriteLine("NOTIFICATION RECEIVED", p.Data);
var data = p.Data; //Dictionary type
};
根据上述数据,除了MainPage(),我如何导航到特定的Page?
这是我在共享项目中的 App.xaml.cs 文件
public App()
{
InitializeComponent();
MainPage = new MainPage();
}
Android项目中的MainActivity.cs类
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
FirebasePushNotificationManager.ProcessIntent(this, Intent);
}
protected override void OnNewIntent(Intent intent)
{
base.OnNewIntent(intent);
FirebasePushNotificationManager.ProcessIntent(this, intent);
}
}
编辑 1:
根据@G.Hakim 回答下面的代码总是打开NotificationsPage 而不发送通知(第一次除外。只有在执行应用程序时第一次打开MainPage)。如果我点击应用程序,它总是转到NotificationsPage 而不是MainPage。
MainActivity.cs
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App(false,null));
FirebasePushNotificationManager.ProcessIntent(this, Intent);
CrossFirebasePushNotification.Current.OnNotificationOpened += (s, p) =>
{
System.Diagnostics.Debug.WriteLine("NOTIFICATION RECEIVED", p.Data);
var data = p.Data;
DependencyService.Get<IToast>().DisplayTost("opened notifications");
LoadApplication(new App(true, p));
};
}
App.xaml.cs
public App(bool hasNotification = false, object notificationData = null)
{
if (hasNotification)
{
MainPage = new NotificationsPage();
}
else
{
MainPage = new MainPage();
}
}
【问题讨论】:
-
你需要自己做
-
@G.hakim - 我已经为 Xamarin.android 实现了通知,但我仍然困惑如何以某种方式做到这一点,以便它可以轻松地与 Forms 结合。如果我打开 Activity1,它与共享项目的
Page有何关系? -
在 Activity1 中初始化您的 Xamarin 表单页面,然后推送到您要导航到的页面。
-
Activity初始化后如何推送页面?
-
如果你想使用这个
global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App());,我可以发布一个例子!!
标签: c# firebase xamarin xamarin.forms firebase-cloud-messaging