ios - ইউআইএএপ্লিকেশন.রেজিস্টারফেমোটনোটিকেশনস() কেবলমাত্র মূল থ্রেড থেকে কল করতে হবে




swift push-notification (5)

আশা করি এটি সাহায্য করবে

DispatchQueue.main.async(execute: {
  UIApplication.shared.registerForRemoteNotifications()
})

এক্সকোড 9 (আইওএস 11) পুশ (রিমোট) বিজ্ঞপ্তির জন্য নিবন্ধভুক্ত করার সময় আমাকে একটি ত্রুটি / সতর্কতা দেখায়।

এখানে ত্রুটি বার্তা

এবং এখানে কোড, আমি চেষ্টা করেছি:

let center  = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
        if error == nil{
              UIApplication.shared.registerForRemoteNotifications()
        }
 }

ত্রুটি / সতর্কতা রেখা:

UIApplication.shared.registerForRemoteNotifications ()

কিভাবে সমাধান করবেন?


উদ্দেশ্য সি এর জন্য, নীচের কোডগুলি কাজ করে

    dispatch_async(dispatch_get_main_queue(), ^{
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    });

এটিই আমার পক্ষে কাজ করেছিল। উপরের স্বীকৃত মন্তব্যে @ মেসন 11987 এর সৌজন্যে।

DispatchQueue.main.async() { code }

ত্রুটি বার্তাটি বেশ পরিষ্কার: মূল থ্রেডে registerForRemoteNotifications প্রেরণ করুন।

আমি granted প্যারামিটারটি ব্যবহার করব এবং তদনুযায়ী error পরিচালনা করব

center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
        if granted {
              DispatchQueue.main.async {
                  UIApplication.shared.registerForRemoteNotifications()
              }
        } else {
           print(error!)
           // handle the error
        }
}

সুইফট 4-এ

আপনি এই সমস্যাটি সমাধান করতে পারেন

DispatchQueue.main.async(execute: {
  UIApplication.shared.registerForRemoteNotifications()
}) 

আশা করি এটি সাহায্য করবে ...





unusernotificationcenter