Получение нескольких значков в уведомлениях и отсутствие звука - PullRequest
0 голосов
/ 03 мая 2019

Я работаю над одним из кодов, где я отправляю данные в iCloud с помощью CloudKit и извлекаю их оттуда. Я могу получить данные и отобразить их в виде таблицы. Но я пытаюсь настроить уведомления так, чтобы с одного устройства, если данные вставлены в icloud, другое устройство получало уведомление со звуком по умолчанию.

Я добавил некоторую функцию в файл AppDelegate.swift, а также в мой файл viewcontroller, как показано в приведенном ниже коде.

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate

        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge], completionHandler: {authorized, error in
            if authorized {
                DispatchQueue.main.async (execute: {
                    application.registerForRemoteNotifications()
                })
            }
        })
        return true
}

func applicationDidEnterBackground(_ application: UIApplication) {

        application.applicationIconBadgeNumber = 0
}

func applicationDidBecomeActive(_ application: UIApplication) {

        application.applicationIconBadgeNumber = 0
}

Вне AppDelegate класс

extension AppDelegate: UNUserNotificationCenterDelegate {

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


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

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

        completionHandler()
}

}

В файле ViewController.swift

func setupCloudSubscription() {

let userDefaults = UserDefaults.standard
if userDefaults.bool(forKey: "subscribed") == false {

let predicate = NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)
let subscription = CKQuerySubscription(recordType: "RecordName", predicate: predicate, options: CKQuerySubscription.Options.firesOnRecordCreation)

let notificationInfo = CKSubscription.NotificationInfo()
notificationInfo.alertLocalizationKey = "New Added"
notificationInfo.shouldBadge = true

subscription.notificationInfo = notificationInfo
let publicData = CKContainer.default().publicCloudDatabase
publicData.save(subscription, completionHandler: {subscription, error in
    if error != nil {
        print(error?.localizedDescription)
    } else {
        userDefaults.set(true, forKey: "subscribed")
        userDefaults.synchronize()
    }
  })
 }   
}

В настоящее время, когда отправляется уведомление, номер значка показывает 5, 7 или 4 и т. Д. Я хочу, чтобы номер значка показывал 1, если отправлено одно уведомление, или 2, если отправлено два уведомления. Кроме того, я не получаю никакого звука для каждого отправленного уведомления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...