এক্সকোড 8 / সুইফট 3.0 এ পুশ বিজ্ঞপ্তিগুলির জন্য নিবন্ধকরণ?


121

আমি আমার অ্যাপ্লিকেশনটি এক্সকোড ৮.০ এ কাজ করার চেষ্টা করছি এবং একটি ত্রুটির মধ্যে পড়ছি । আমি জানি এই কোডটি পূর্ববর্তী সংস্করণগুলিতে দ্রুত কাজ করেছে, তবে আমি ধারণা করছি এর জন্য কোডটি নতুন সংস্করণে পরিবর্তিত হয়েছে। আমি যে কোডটি চালানোর চেষ্টা করছি তা এখানে:

let settings = UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil)     
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.shared().registerForRemoteNotifications()

আমি যে ত্রুটিটি পাচ্ছি তা হ'ল "আর্গুমেন্ট লেবেলগুলি (ফর টাইপস :, বিভাগসমূহ :) 'কোনও উপলব্ধ ওভারলোডের সাথে মেলে না"

এই কাজটি করার চেষ্টা করার জন্য কি অন্য একটি আদেশ রয়েছে?


2
আমি কীভাবে এটি করতে পারি তার জন্য একটি গাইড লিখেছিলাম: eladnava.com/…
এলাদ নাভা

উত্তর:


307

UserNotificationsফ্রেমওয়ার্কটি আমদানি করুন UNUserNotificationCenterDelegateএবং AppDelegate.swift এ যুক্ত করুন

ব্যবহারকারীর অনুমতি অনুরোধ

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {


        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
            // Enable or disable features based on authorization.
        }
        application.registerForRemoteNotifications()
        return true
}

ডিভাইস টোকেন পাচ্ছেন

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

    let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
    print(deviceTokenString)
}

ত্রুটির ক্ষেত্রে

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {

        print("i am not available in simulator \(error)")
}

ক্ষেত্রে যদি আপনার অনুমোদিত অনুমতিগুলি জানতে হয়

UNUserNotificationCenter.current().getNotificationSettings(){ (settings) in

            switch settings.soundSetting{
            case .enabled:

                print("enabled sound setting")

            case .disabled:

                print("setting has been disabled")

            case .notSupported:
                print("something vital went wrong here")
            }
        }

1
আমি দ্রুত 2.3 এ ত্রুটি পেয়েছি: ইউএন ইউজারনোটিকেশন সেন্টারের কোনও সদস্য বর্তমান নেই
অ্যাসিঙ্ক-

খড়টি আপনি উদ্দেশ্যগতভাবে সেভ সরবরাহ করতে পারেন
আইয়াজ

কেবল একটি নোট, ডিভাইস টোকেন আর দেয় না। কমপক্ষে আমার ক্ষেত্রে এটি কেবল "32 বাইট"
ফেরায়

1
@ অ্যাসিঙ্ক- আপনি বর্তমান () দেখছেন না কারণ এটি কেবল সুইফট 3-এ কাজ করছে
অ্যালেন

4
@ পাভলোস নিকোলাউ ইউজারনোটফিকেশন ফ্রেমওয়ার্ক আমদানি করুন
আনিস পারাজুলি

48
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    if #available(iOS 10, *) {

        //Notifications get posted to the function (delegate):  func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: () -> Void)"


        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in

            guard error == nil else {
                //Display Error.. Handle Error.. etc..
                return
            }

            if granted {
                //Do stuff here..

                //Register for RemoteNotifications. Your Remote Notifications can display alerts now :)
                DispatchQueue.main.async {
                    application.registerForRemoteNotifications()
                }
            }
            else {
                //Handle user denying permissions..
            }
        }

        //Register for remote notifications.. If permission above is NOT granted, all notifications are delivered silently to AppDelegate.
        application.registerForRemoteNotifications()
    }
    else {
        let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
        application.registerForRemoteNotifications()
    }

    return true
}

এই নতুন কাঠামোর যোগফল কি? আমি কি এখানে দেখতে একটি ব্যবহার 'completionHandler প্রতিনিধি উপর' পন্থা এবং তারপর সিদ্ধান্ত সরাসরি দেওয়া হয়: মঞ্জুর, ত্রুটি, অথবা notGranted .... 6 <আইওএস <10 আপনি কি ছিল application.isRegisteredForRemoteNotifications()তা দেখতে রাইট? আর কিছু?
মধু

আপনার গ্রহণযোগ্য উত্তর থেকে আলাদা কেন? তিনি একটি আছে application.registerForRemoteNotifications() পরে তারcenter.requestAuthorization
মধু

1
@Honey; আপনি "রিমোট" বিজ্ঞপ্তি সক্ষম করতে চাইলে এটি যুক্ত করা হয়। আমি যখন আমার উত্তরটি লিখেছিলাম তখন অন্য কোনও উত্তর উপস্থিত ছিল না এবং @OP নির্দিষ্ট করে না যে তারা দূরবর্তী বা স্থানীয় বা আইওএস 10 সমর্থন চায় কিনা তাই আমি যতটা পারি তারত যুক্ত করেছি। দ্রষ্টব্য: ব্যবহারকারীর অ্যাক্সেস না দেওয়া পর্যন্ত আপনার রিমোটনোটফিকেশনগুলির জন্য নিবন্ধভুক্ত করা উচিত নয় (অন্যথায় সমস্ত দূরবর্তী বিজ্ঞপ্তি নিঃশব্দে সরবরাহ করা হয় [যদি না আপনি যা চান তা না করে] - কোনও পপআপ নেই)। এছাড়াও, নতুন এপিআইয়ের সুবিধা হ'ল এটি সংযুক্তিগুলিকে সমর্থন করে। অন্য কথায়, আপনি আপনার বিজ্ঞপ্তিতে জিআইএফ এবং অন্যান্য চিত্রগুলি, ভিডিও ইত্যাদি যোগ করতে পারেন।
ব্র্যান্ডন

3
সমাপ্তিতে, আপনাকে মূল থ্রেডে ইউআই সম্পর্কিত কাজগুলি সম্পাদন করতে হবে ... DispatchQueue.main.async {... এখানে স্টাফ করুন ...}
ক্রিস অ্যালিনসন


27
import UserNotifications  

এরপরে, আপনার টার্গেটের জন্য প্রকল্প সম্পাদকের কাছে যান এবং সাধারণ ট্যাবে, সংযুক্ত ফ্রেমওয়ার্ক এবং লাইব্রেরি বিভাগ সন্ধান করুন।

+ ক্লিক করুন এবং ব্যবহারকারী নোটিকেশন.ফ্রেমওয়ার্ক নির্বাচন করুন:

// iOS 12 support
if #available(iOS 12, *) {  
    UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound, .provisional, .providesAppNotificationSettings, .criticalAlert]){ (granted, error) in }
    application.registerForRemoteNotifications()
}

// iOS 10 support
if #available(iOS 10, *) {  
    UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]){ (granted, error) in }
    application.registerForRemoteNotifications()
}
// iOS 9 support
else if #available(iOS 9, *) {  
    UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil))
    UIApplication.shared.registerForRemoteNotifications()
}
// iOS 8 support
else if #available(iOS 8, *) {  
    UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil))
    UIApplication.shared.registerForRemoteNotifications()
}
// iOS 7 support
else {  
    application.registerForRemoteNotifications(matching: [.badge, .sound, .alert])
}

বিজ্ঞপ্তি প্রতিনিধি পদ্ধতি ব্যবহার করুন

// Called when APNs has assigned the device a unique token
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {  
    // Convert token to string
    let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
    print("APNs device token: \(deviceTokenString)")
}

// Called when APNs failed to register the device for push notifications
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {  
    // Print the error to console (you should alert the user that registration failed)
    print("APNs registration failed: \(error)")
}

পুশ নোটিফিকেশন পাওয়ার জন্য

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    completionHandler(UIBackgroundFetchResult.noData)
}

পুশ বিজ্ঞপ্তিগুলি সেট আপ করা আপনার অ্যাপ্লিকেশনটির জন্য এক্সকোড 8 এর মধ্যে বৈশিষ্ট্যটি সক্ষম করে। কেবলমাত্র আপনার টার্গেট জন্য প্রকল্প সম্পাদকে যান এবং তারপর ক্লিক কেপেবিলিটিস ট্যাব । দেখুন পুশ বিজ্ঞপ্তিগুলি এবং এর মান টগল করুন

আরও বিজ্ঞপ্তি প্রতিনিধি পদ্ধতিগুলির জন্য নীচের লিঙ্কটি দেখুন

স্থানীয় এবং দূরবর্তী বিজ্ঞপ্তিগুলি হ্যান্ডলিং ইউআইএএপ্লিকেশনডেলিগেট - স্থানীয় এবং দূরবর্তী বিজ্ঞপ্তিগুলি পরিচালনা করা ling

https://developer.apple.com/reference/uikit/uiapplicationdelegate


20

এক্সকোড ৮ এর বর্তমান বিটা দিয়ে আমার সার্ভারে প্রেরণ করার জন্য ডিভাইস টোকেন ডেটা অবজেক্টটিকে একটি স্ট্রিংয়ে রূপান্তর করার ক্ষেত্রে আমার এখানে উত্তরগুলির সাথে সমস্যা ছিল বিশেষত যেটি 8.0b6 তে ডিভাইস টোকেন.ডেস্ক্রিপশন ব্যবহার করছে যা "32 বাইট" প্রত্যাবর্তন করবে খুব দরকারী নয় :)

এটিই আমার পক্ষে কাজ করেছিল ...

"হেক্সস্ট্রিং" পদ্ধতিটি প্রয়োগ করতে ডেটাতে একটি এক্সটেনশন তৈরি করুন:

extension Data {
    func hexString() -> String {
        return self.reduce("") { string, byte in
            string + String(format: "%02X", byte)
        }
    }
}

এবং তারপরে আপনি যখন দূরবর্তী বিজ্ঞপ্তিগুলির জন্য নিবন্ধকরণ থেকে কলব্যাক পান তখন তা ব্যবহার করুন:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let deviceTokenString = deviceToken.hexString()
    // Send to your server here...
}

8
আমারও "32 বাইস" সমস্যা ছিল। দুর্দান্ত সমাধান, আপনি কোনও এক্সটেনশন তৈরি না করেই ইন-লাইন রূপান্তরটি করতে পারেন। এটি পছন্দ করুন: let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
আলেন স্টুলজ

1
অ্যাবসার্ড যে এপিআই থেকে নিজেই কোনও সমাধান আসছে না
অ্যাভিয়েল গ্রস

1
হ্যাঁ এটা সবসময় চমত্কার অদ্ভুত যে এপিআই .. বিস্মিত যখন iOS10 মধ্যে নতুন বিজ্ঞপ্তি ফ্রেমওয়ার্ক করছেন তারা তা সমাধান করতে না হয়েছে
tomwilson

17

আপনার কোডের পরিবর্তে আইওএস 10 এ, আপনাকে নিম্নলিখিতগুলির সাথে বিজ্ঞপ্তির জন্য অনুমোদনের জন্য অনুরোধ করা উচিত: ( UserNotificationsফ্রেমওয়ার্ক যুক্ত করতে ভুলবেন না )

if #available(iOS 10.0, *) {
        UNUserNotificationCenter.current().requestAuthorization([.alert, .sound, .badge]) { (granted: Bool, error: NSError?) in
            // Do something here
        }
    }

এছাড়াও, আপনার জন্য সঠিক কোডটি হ'ল ( elseউদাহরণস্বরূপ আগের শর্তের মধ্যে ব্যবহার করুন):

let setting = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
UIApplication.shared().registerUserNotificationSettings(setting)
UIApplication.shared().registerForRemoteNotifications()

শেষ পর্যন্ত, -> -> এর Push Notificationঅধীনে সক্রিয় করা আছে তা নিশ্চিত করুন । (এটি চালু )targetCapabilitiesPush notificationOn



2
উত্তরের জন্য আপনাকে অনেক ধন্যবাদ! কোডটি ব্যবহার করে তবে এটি বলছে "অমীমাংসিত শনাক্তকারীর ব্যবহার 'ইউএন ইউজারনোটফিকেশন সেন্টার'"
আশের হাথর্ন

এবং ডকুমেন্টেশনের জন্য আপনাকে অনেক ধন্যবাদ, ব্লেবলা! আমি তাদের সাইটে এটি দেখতে পেলাম না, খুশিতে এটি উপস্থিত রয়েছে। : ডি
আশের হাথর্ন

4
অপেক্ষা করুন, আমি মনে করি আমি এটি পেয়েছি! সবেমাত্র বিজ্ঞপ্তি ফ্রেমওয়ার্ক আমদানি করতে হয়েছিল। এক্সডি
আশের হাথর্ন

1
হাঁ। আমি ভবিষ্যতের পাঠকের জন্য এটি যুক্ত করতে আমার উত্তর সম্পাদনা করব। এছাড়াও, নতুন বিজ্ঞপ্তিগুলি সম্পর্কে পড়ুন, এখন আরও শক্তিশালী এবং ইন্টারেক্টিভ উপায় রয়েছে। :)
tsnkff

8

আমার জন্য এই কাজ। অ্যাপডিলেজেটে প্রথম

import UserNotifications

তারপর:

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        registerForRemoteNotification()
        return true
    }

    func registerForRemoteNotification() {
        if #available(iOS 10.0, *) {
            let center  = UNUserNotificationCenter.current()
            center.delegate = self
            center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
                if error == nil{
                    UIApplication.shared.registerForRemoteNotifications()
                }
            }
        }
        else {
            UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil))
            UIApplication.shared.registerForRemoteNotifications()
        }
    }

ডিভিসেটোকেন পেতে:

  func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

       let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})

}

5

শীর্ষস্থানীয়, আপনি এই ক্রিয়াটির জন্য প্রধান থ্রেড ব্যবহার করা উচিত।

let center = UNUserNotificationCenter.current()
center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
        if granted {
            DispatchQueue.main.async(execute: {
                UIApplication.shared.registerForRemoteNotifications()
            })
        }
    }

2

প্রথমে , ব্যবহারকারী নোটিফিকেশন স্থিতি শুনুন, অর্থাৎ, registerForRemoteNotifications()এপিএন ডিভাইস টোকেন পেতে;
দ্বিতীয়ত , অনুমোদনের অনুরোধ করুন। যখন ব্যবহারকারী কর্তৃক অনুমোদিত হবে তখন ডিভাইস টোকেন শ্রোতাদের কাছে প্রেরণ করা হবে AppDelegate;
তৃতীয় , আপনার সার্ভারে ডিভাইস টোকেন প্রতিবেদন করুন।

extension AppDelegate {
    /// 1. 监听 deviceToken
    UIApplication.shared.registerForRemoteNotifications()

    /// 2. 向操作系统索要推送权限(并获取推送 token)
    static func registerRemoteNotifications() {
        if #available(iOS 10, *) {
            let uc = UNUserNotificationCenter.current()
            uc.delegate = UIApplication.shared.delegate as? AppDelegate
            uc.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
                if let error = error { // 无论是拒绝推送,还是不提供 aps-certificate,此 error 始终为 nil
                    print("UNUserNotificationCenter 注册通知失败, \(error)")
                }
                DispatchQueue.main.async {
                    onAuthorization(granted: granted)
                }
            }
        } else {
            let app = UIApplication.shared
            app.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil)) // 获取用户授权
        }
    }

    // 在 app.registerUserNotificationSettings() 之后收到用户接受或拒绝及默拒后,此委托方法被调用
    func application(_ app: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) {
        // 已申请推送权限,所作的检测才有效
        // a 征询推送许可时,用户把app切到后台,就等价于默拒了推送
        // b 在系统设置里打开推送,但关掉所有形式的提醒,等价于拒绝推送,得不token,也收不推送
        // c 关掉badge, alert和sound 时,notificationSettings.types.rawValue 等于 0 和 app.isRegisteredForRemoteNotifications 成立,但能得到token,也能收到推送(锁屏和通知中心也能看到推送),这说明types涵盖并不全面
        // 对于模拟器来说,由于不能接收推送,所以 isRegisteredForRemoteNotifications 始终为 false
       onAuthorization(granted: app.isRegisteredForRemoteNotifications)
    }

    static func onAuthorization(granted: Bool) {
        guard granted else { return }
        // do something
    }
}

extension AppDelegate {
    func application(_ app: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        //
    }

    // 模拟器得不到 token,没配置 aps-certificate 的项目也得不到 token,网络原因也可能导致得不到 token
    func application(_ app: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
        //
    }
}

কীভাবে একাধিক বিজ্ঞপ্তি যুক্ত করবেন?
আরগাপিকে

@ আরগাপেকে, পুশ নোটিফিকেশনগুলি প্রেরণ করা আপনার সার্ভার প্ল্যাটফর্মটি যা করে।
ডনসং

0

অ্যাস্ট 1 এর উত্তরটি খুব সহজ এবং দরকারী। এটা আমার জন্য কাজ করে, আপনাকে অনেক ধন্যবাদ। আমি কেবল এখানে এটি নির্দেশ করতে চাই, যাতে এই উত্তরটির প্রয়োজন হয় এমন লোকেরা সহজেই এটি খুঁজে পেতে পারে। সুতরাং, স্থানীয় এবং দূরবর্তী (পুশ) বিজ্ঞপ্তিটি নিবন্ধকরণ থেকে আমার কোড এখানে।

    //1. In Appdelegate: didFinishLaunchingWithOptions add these line of codes
    let mynotif = UNUserNotificationCenter.current()
    mynotif.requestAuthorization(options: [.alert, .sound, .badge]) {(granted, error) in }//register and ask user's permission for local notification

    //2. Add these functions at the bottom of your AppDelegate before the last "}"
    func application(_ application: UIApplication, didRegister notificationSettings: UNNotificationSettings) {
        application.registerForRemoteNotifications()//register for push notif after users granted their permission for showing notification
}
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let tokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
    print("Device Token: \(tokenString)")//print device token in debugger console
}
    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    print("Failed to register: \(error)")//print error in debugger console
}

0

কেবল নিম্নলিখিতটি করুন didFinishWithLaunching::

if #available(iOS 10.0, *) {

    let center = UNUserNotificationCenter.current()

    center.delegate = self
    center.requestAuthorization(options: []) { _, _ in
        application.registerForRemoteNotifications()
    }
}

আমদানির বিবৃতি সম্পর্কে মনে রাখবেন:

import UserNotifications

আমি বিশ্বাস করি এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি registerForRemoteNotifications()সম্পূর্ণ হওয়ার হ্যান্ডলারে কল করা ঠিক বলে মনে হচ্ছে requestAuthorization()। আপনি এমনকি registerForRemoteNotifications()কোনও if grantedবিবৃতিটি ঘিরে রাখতে চাইতে পারেন : center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in if granted { UIApplication.shared.registerForRemoteNotifications() } }
বোকাক্সিকা

-1

এই মন্তব্য কোডটি একবার দেখুন:

import Foundation
import UserNotifications
import ObjectMapper

class AppDelegate{

    let center = UNUserNotificationCenter.current()
}

extension AppDelegate {

    struct Keys {
        static let deviceToken = "deviceToken"
    }

    // MARK: - UIApplicationDelegate Methods
    func application(_: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

        if let tokenData: String = String(data: deviceToken, encoding: String.Encoding.utf8) {
            debugPrint("Device Push Token \(tokenData)")
        }

        // Prepare the Device Token for Registration (remove spaces and < >)
        setDeviceToken(deviceToken)
    }

    func application(_: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
        debugPrint(error.localizedDescription)
    }

    // MARK: - Private Methods
    /**
     Register remote notification to send notifications
     */
    func registerRemoteNotification() {

        center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in

            // Enable or disable features based on authorization.
            if granted  == true {

                DispatchQueue.main.async {
                    UIApplication.shared.registerForRemoteNotifications()
                }
            } else {
                debugPrint("User denied the permissions")
            }
        }
    }

    /**
     Deregister remote notification
     */
    func deregisterRemoteNotification() {
        UIApplication.shared.unregisterForRemoteNotifications()
    }

    func setDeviceToken(_ token: Data) {
        let token = token.map { String(format: "%02.2hhx", arguments: [$0]) }.joined()
        UserDefaults.setObject(token as AnyObject?, forKey: “deviceToken”)
    }

    class func deviceToken() -> String {
        let deviceToken: String? = UserDefaults.objectForKey(“deviceToken”) as? String

        if isObjectInitialized(deviceToken as AnyObject?) {
            return deviceToken!
        }

        return "123"
    }

    func isObjectInitialized(_ value: AnyObject?) -> Bool {
        guard let _ = value else {
                return false
         }
            return true
    }
}

extension AppDelegate: UNUserNotificationCenterDelegate {

    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping(UNNotificationPresentationOptions) -> Swift.Void) {

        ("\(notification.request.content.userInfo) Identifier: \(notification.request.identifier)")

        completionHandler([.alert, .badge, .sound])
    }

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Swift.Void) {

        debugPrint("\(response.notification.request.content.userInfo) Identifier: \(response.notification.request.identifier)")

    }
}

কোন সমস্যা আছে কিনা আমাকে জানাবেন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.