我有一个 Xamarin.Forms 应用程序 (v4.3.0.908675),如下所示:
它有几个选项卡并使用非常基本的 XF Shell 进行布局。
它接收多个推送通知,其中一个应用程序需要在点击通知后打开特定选项卡。该应用程序然后它冷启动。
为了做到这一点,我正在尝试以下操作: 在我的 App.xaml.cs 中,我有一个方法,每次打开通知时都会调用该方法,该方法会向 shell 发送消息以选择选项卡。
public App()
{
// One Signal
OneSignal.Current.StartInit( "8449c-..." )
.HandleNotificationOpened(HandleNotificationOpened)
.EndInit();
}
// When a push notification is opened
private void HandleNotificationOpened( OSNotificationOpenedResult result )
{
Messenger.Default.Send( new ServiceScheduleMessage(), "LoadSectionDeepLink" );
}
然后在我的 AppShell.xaml.cs 中收到消息并更改默认选项卡:
//* loading service schedules deep link
private void LoadServiceSchedulesDeepLink()
{
CurrentItem = this.my_service_schedules;
}
但是,当我这样做时,应用程序会像这样打开:
选项卡不见了,如果点击导航到其他页面的某些按钮,应用程序就会崩溃。似乎我在 Shell 准备好之前更改了选项卡并导致了这种奇怪的行为。
问题:
有没有办法知道应用程序已经完成启动,所以我可以调用其他方法,比如更改当前的 Shell 选项卡?