Saya ingin memindahkan izin pemberitahuan setelah pengguna masuk tetapi selalu muncul saat memulai aplikasi untuk iOS.

AppDelegate.cs

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    // other code here
    ......

   InitializeAppCenter();
}

void InitializeAppCenter()
{
     AppCenter.Start(myAppSecret, typeof(Push));
    // app center initialization
   ......

   
      this.pushNotificationServiceDelegate = new PushNotificationDelegate();
      UNUserNotificationCenter.Current.Delegate = this.pushNotificationServiceDelegate;
    
 }

PushNotificationDelegate.cs

[assembly: Dependency(typeof(PushNotificationDelegate))]
namespace Test.iOS.DependencyServices
{
    public class PushNotificationDelegate : UNUserNotificationCenterDelegate, INotificationPermission
    {

     public bool didReceiveNotificationInForeground { get; set; }

    public void Request()
    {
        if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
        {
            // Ask the user for permission to get notifications on iOS 10.0+
            UNUserNotificationCenter.Current.RequestAuthorization(
                   UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound,
                   //UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound,
                   (approved, error) => {

                       if (approved)
                           InvokeOnMainThread(UIApplication.SharedApplication.RegisterForRemoteNotifications);
                   });
        }
        else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
        {
            // Ask the user for permission to get notifications on iOS 8.0+
            var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                    new NSSet());

            UIApplication.SharedApplication.RegisterUserNotificationSettings(notificationSettings);
            UIApplication.SharedApplication.RegisterForRemoteNotifications();
        }
    }

   public override void WillPresentNotification(UNUserNotificationCenter center, UNNotification notification, Action<UNNotificationPresentationOptions> completionHandler)
   {
      //.....
   }


   }
}

Seharusnya itu hanya mendaftarkan delegasi dan menunjukkan otorisasi izin untuk pemberitahuan HANYA ketika metode Permintaan dipanggil melalui layanan ketergantungan.

Setelah pengguna login, saya menggunakan metode permintaan layanan ketergantungan INotificationPermission. tetapi tidak ada yang muncul karena otorisasi izin pemberitahuan diminta dari startup.

Saat ini saya menggunakan push AppCenter untuk notifikasi. Bagaimana cara memindahkan izin pemberitahuan dari startup dan menelepon hanya jika diperlukan?

0
heathkev 6 Juli 2020, 07:11

1 menjawab

Jawaban Terbaik

Bagi mereka yang akan menemukan ini menggunakan AppCenter Push. Memindahkan AppCenter.Start(myAppSecret, typeof(Push)) di dalam Request() berhasil.

0
heathkev 13 Juli 2020, 06:52