0

Hier ist mein Code:SWIFT: Warum bekomme ich keine Benachrichtigungen von meiner CloudKit App?

 @IBAction func sendSweet(sender: AnyObject) { 





    //delegate method 




    let newSweet = CKRecord(recordType: "Extra1") 
    newSweet["content"] = textField.text 

    let publicData = CKContainer.defaultContainer().publicCloudDatabase 
    publicData.saveRecord(newSweet, completionHandler: { (record:CKRecord?, error:NSError?) -> Void in 
     if error == nil { 
      dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       self.tableView.beginUpdates() 
       self.sweets.insert(newSweet, atIndex: 0) 
       let indexPath = NSIndexPath(forRow: 0, inSection: 0) 
       self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Top) 
       self.tableView.endUpdates() 
       self.textField.text = "" 
       self.textField.resignFirstResponder() 



      }) 


     }}) 
    // Put the CloudKit private database in a constants 
    let privateDatabase = CKContainer.defaultContainer().privateCloudDatabase 

    // Create subscription and set three of its properties (an id, a predicate, and options) 
    let friendsSubscription = CKSubscription(recordType: "Extra1", 
     predicate: NSPredicate(format: "TRUEPREDICATE"), 
     subscriptionID: "Extra1", 
     options: .FiresOnRecordCreation) 

    // Create a notification and set two of its properties (alertBody and shouldBadge) 
    let notificationInfo = CKNotificationInfo() 
    notificationInfo.alertBody = "New message in Lms Chat" 
    notificationInfo.shouldBadge = false 

    // Attach the notification to the subscription 
    friendsSubscription.notificationInfo = notificationInfo 

    // Save the subscription in the private database 
    privateDatabase.saveSubscription(friendsSubscription) {recordReturned, error in 
     // On the main thread, display an error/success message in the textView 
     if error != nil { 
      NSOperationQueue.mainQueue().addOperationWithBlock { 
       self.textField.text = "Cloud error\n\(error!.localizedDescription)" 
      } 
     } else { 
      NSOperationQueue.mainQueue().addOperationWithBlock { 
       self.textField.text = "" 
      } 
     } 
    } 

} 
func textFieldShouldEndEditing(textField: UITextField!) -> Bool { //delegate method 
    return false 
} 

func textFieldShouldReturn(textField: UITextField!) -> Bool { //delegate method 
    textField.resignFirstResponder() 

    return true 

} 

Es ist eine Messaging-Anwendung so Nachricht Menschen können einander aber ich möchte, dass sie auch Benachrichtigungen empfangen. Dies ist der Code für Benachrichtigungen und ich auch einige Code für Benachrichtigungen in AppDelegate haben:

import UIKit 
    import CloudKit 

    @UIApplicationMain 
    class AppDelegate: UIResponder, UIApplicationDelegate { 

var window: UIWindow? 


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

    let notificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) 

    UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings) 

    UIApplication.sharedApplication().registerForRemoteNotifications() 

    return true 
} 


func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 
    let cloudKitNotification = CKNotification(fromRemoteNotificationDictionary: userInfo as! [String:NSObject]) 

    if cloudKitNotification.notificationType == CKNotificationType.Query { 
     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      NSNotificationCenter.defaultCenter().postNotificationName("performReload", object: nil) 
     }) 

    } 

} 

func resetBadge() { 
    let badgeReset = CKModifyBadgeOperation(badgeValue: 0) 
    badgeReset.modifyBadgeCompletionBlock = { (error) -> Void in 
     if error == nil { 
      UIApplication.sharedApplication().applicationIconBadgeNumber = 0 
     } 

    } 

    CKContainer.defaultContainer().addOperation(badgeReset) 
} 


func applicationWillResignActive(application: UIApplication) { 
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 
} 

func applicationDidEnterBackground(application: UIApplication) { 
    resetBadge() 

} 

func applicationWillEnterForeground(application: UIApplication) { 
    dispatch_async(dispatch_get_main_queue(), {() -> Void in 
     NSNotificationCenter.defaultCenter().postNotificationName("performReload", object: nil) 
    }) 
} 

func applicationDidBecomeActive(application: UIApplication) { 
    resetBadge() 
} 

func applicationWillTerminate(application: UIApplication) { 
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 
} 

}

Aber Benachrichtigungen kommen nicht, obwohl ich den gesamten Code benötigt, um Benachrichtigungen jedes Mal zu machen jemand sendet eine Nachricht. Fehle ich etwas? Vielen Dank!

Antwort

0

Sie fügen Daten zur öffentlichen Datenbank hinzu, aber Sie erstellen Ihr Abonnement in der privaten Datenbank. Einer dieser beiden muss geändert werden, um dem anderen zu entsprechen.

+0

Wenn ich es in die Öffentlichkeit ändern, sollte es dann gut funktionieren? –

+0

Wenn so vielen Dank! –