0

This is my App on AppleWatch:

@main
struct AppleWatch_App: App {
    @WKExtensionDelegateAdaptor(ExtensionDelegate.self) var delegate
}

and this is my ExtensionDelegate:

import WatchKit
import UserNotifications

class ExtensionDelegate: NSObject, WKExtensionDelegate, UNUserNotificationCenterDelegate {
    let container = CKContainer(identifier: "iCloud.pl.container")

    var privateDatabase: CKDatabase {
        return container.privateCloudDatabase
    }

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse) async { 
        // it is not called when I change Category record in iCloud, why?
        print("notification arrived")
    }
    
    func applicationDidFinishLaunching() { // it is called when I launch the app
        print("didFinishCalled")
        let center = UNUserNotificationCenter.current()
        center.delegate = self
        Task {
            do {
                try await center.requestAuthorization(options: [.badge, .sound, .alert])
            } catch {}
            registerForPush()
        }
    }


    func registerForPush() {
         privateDatabase.save(CKRecordZone(zoneName: "fieldservice")) { _, _ in }

        let options: CKQuerySubscription.Options = [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion]
        let categorySubscription = CKQuerySubscription(recordType: "Category", predicate: NSPredicate(value: true), options: options)
        let notificationInfo = CKSubscription.NotificationInfo()
        notificationInfo.shouldBadge = false
        notificationInfo.shouldSendContentAvailable = true
        categorySubscription.notificationInfo = notificationInfo
        let privateSubscriptionsOperation = CKModifySubscriptionsOperation(subscriptionsToSave: [categorySubscription], subscriptionIDsToDelete: nil)
        privateSubscriptionsOperation.database = privateDatabase
        let queue = OperationQueue()
        queue.maxConcurrentOperationCount = 1
        queue.addOperation(privateSubscriptionsOperation)
    }
}
Bartłomiej Semańczyk
  • 59,234
  • 49
  • 233
  • 358

0 Answers0