كيف يمكنني الانتقال إلى الصفحة باستخدام الحدث المبوب في Firebase


أهلاً،
أحاول الانتقال إلى صفحة معينة في حدث tabb لإشعارات Firebase، كل شيء يعمل بشكل جيد باستثناء الانتقال إلى صفحة معينة، يتم تشغيل الحدث ولكن لا يتم التنقل، كيف يمكنني إصلاحه. سوف نقدر بشدة.
يعتبر،

ما حاولت:

ج #
using Microsoft.Maui.LifecycleEvents;
using Plugin.Firebase.Auth;
using Plugin.Firebase.Bundled.Shared;
using Plugin.Firebase.Crashlytics;
using CommunityToolkit.Maui;
using CommunityToolkit.Maui.Storage;
using Plugin.Firebase.CloudMessaging;
#if IOS
using Plugin.Firebase.Bundled.Platforms.iOS;
#else
using Plugin.Firebase.Bundled.Platforms.Android;
#endif
using Microsoft.Extensions.Logging;
//using Plugin.MauiMTAdmob;

namespace LatestMobilePrices;

public static class MauiProgram
{
	public static MauiApp CreateMauiApp()
	{
		var builder = MauiApp.CreateBuilder();
		builder
			.UseMauiApp<App>()
            .UseMauiCommunityToolkit()
                        .RegisterFirebaseServices()
                        //.UseMauiMTAdmob()
            .ConfigureFonts(fonts =>
			{
				fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
				fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
			});

#if DEBUG
		builder.Logging.AddDebug();
#endif
        builder.Services.AddSingleton<IFileSaver>(FileSaver.Default);
        builder.Services.AddTransient<savepage>();

        return builder.Build();
	}

    private static MauiAppBuilder RegisterFirebaseServices(this MauiAppBuilder builder)
    {
        builder.ConfigureLifecycleEvents(events => {
#if IOS
            events.AddiOS(iOS => iOS.FinishedLaunching((app, launchOptions) => {
                CrossFirebase.Initialize(CreateCrossFirebaseSettings());
                CrossFirebaseCrashlytics.Current.SetCrashlyticsCollectionEnabled(true);
                return false;
            }));
#else
            events.AddAndroid(android => android.OnCreate((activity, _) =>
                CrossFirebase.Initialize(activity, CreateCrossFirebaseSettings())));
                CrossFirebaseCrashlytics.Current.SetCrashlyticsCollectionEnabled(true);
                CrossFirebaseCloudMessaging.Current.NotificationTapped+=(sender,e)=>
                {
                System.Diagnostics.Debug.WriteLine("tabbed");

                    Shell.Current.GoToAsync(nameof(savepage));
                };
#endif
        });

        builder.Services.AddSingleton(_ => CrossFirebaseAuth.Current);
        return builder;
    }

    private static CrossFirebaseSettings CreateCrossFirebaseSettings()
    {
        return new CrossFirebaseSettings(
            isAuthEnabled: true,
            isCloudMessagingEnabled: true,
            isAnalyticsEnabled: true);
    }

}

الحل 1

مرحباً يا صديق!

في ملفك App.xaml.cs، بعد أن تقوم InitializeComponent() بتعيين الإجراء:

CrossFirebaseCloudMessaging.Current.NotificationTapped += Current_NotificationTapped;

وبعد ذلك قم بإنشاء الوظيفة:

الفراغ الخاص Current_NotificationTapped (مرسل الكائن، FCNotificationTappedEventArgs e)
{
يحاول
{
var data = e.Notification.Data;
الصفحة الرئيسية = صفحة التفاصيل الجديدة () ؛

}
قبض (استثناء على سبيل المثال)
{
System.Diagnostics.Debug.WriteLine(“الاستثناء:>>” + ex);
}
}

コメント

タイトルとURLをコピーしました