Saltar al contenido

¿Cómo suscribirse a los cambios de una base de datos pública en CloudKit?

Es imprescindible interpretar el código correctamente antes de utilizarlo a tu proyecto si tdeseas aportar algo puedes decirlo en los comentarios.

Solución:

Aquí hay algunas otras cosas que puede verificar:

= 1 =

Asegúrese de que el contenedor de CloudKit definido en su código sea el mismo al que está accediendo en el panel de control de CloudKit. A veces, pasamos por alto lo que seleccionamos en Xcode como contenedor de CloudKit cuando creamos y probamos varios contenedores.

= 2 =

Comprobar el Suscripciones pestaña en el tablero de CloudKit y asegúrese de que su Person la suscripción se crea cuando inicia su aplicación. Si lo ve, intente eliminarlo en el Tablero de CK y luego ejecute su aplicación nuevamente y asegúrese de que aparezca nuevamente.

= 3 =

Verifique los registros en el Dashboard de CK. Mostrarán una entrada de registro de tipo push cada vez que se envía una notificación push. Si lo está registrando cuando actualiza/agrega un registro en el Tablero de CK, entonces sabe que el problema radica en su dispositivo.

= 4 =

Recuerda que las notificaciones push no funcionan en el simulador de iOS. Necesita un dispositivo real (o una Mac si está creando una aplicación para macOS).

= 5 =

A través de pruebas exhaustivas, descubrí que las notificaciones son más confiables si siempre configura el alertBody incluso si está en blanco. Como esto:

let info = CKSubscription.NotificationInfo()
info.shouldSendContentAvailable = true
info.alertBody = "" //This needs to be set or pushes don't always get sent
subscription.notificationInfo = info

= 6 =

Para una aplicación de iOS, el delegado de mi aplicación maneja notificaciones como esta:

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate 

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

    //Ask Permission for Notifications
    UNUserNotificationCenter.current().delegate = self
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound], completionHandler:  authorized, error in
      DispatchQueue.main.async 
        if authorized 
          UIApplication.shared.registerForRemoteNotifications()
        
      
    )

    return true
  

  //MARK: Background & Push Notifications
  func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]
    let dict = userInfo as! [String: NSObject]
    let notification = CKNotification(fromRemoteNotificationDictionary: dict)

    if let sub = notification.subscriptionID
      print("iOS Notification: (sub)")
    
  

  //After we get permission, register the user push notifications
  func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) 
    //Add your CloudKit subscriptions here...
  


No es necesario obtener permiso para las notificaciones si solo realiza envíos en segundo plano, pero para cualquier cosa que el usuario vea en forma de notificación emergente, debe obtener permiso. Si su aplicación no solicita ese permiso, intente eliminarla de su dispositivo y compilarla nuevamente en Xcode.

¡Buena suerte! : )

Recuerda que tienes la capacidad de valorar este enunciado .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.