2017-10-28 132 views
1

在我的應用程序中,我有一個公共的CloudKit數據庫。我將它用於遠程訂閱。如何在遠程通知的alertBody中顯示CKRecord中的數據?

我在一個CloudKit儀表盤創建一個GlobalNotification記錄,創造了一個類型Stringcontent場此記錄在我的AppDelegate實現以下方法進行通知的工作:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
     let subscription = CKQuerySubscription(recordType: "GlobalNotification", predicate: NSPredicate(format: "TRUEPREDICATE"), options: .firesOnRecordCreation) 

     let info = CKNotificationInfo() 
     info.alertBody = "Some Text" // here i want to show content String data of a CKRecord which fired a notification 
     info.shouldBadge = true 
     info.soundName = "default" 


     subscription.notificationInfo = info 

     CKContainer.default().publicCloudDatabase.save(subscription, completionHandler: { subscription, error in 
      if error == nil { 
       // Subscription saved successfully 
      } else { 
       // An error occurred 
      } 
     }) 
    } 

之後,我創建新GlobalNotification記錄在cloudKit儀表盤,並添加在content領域的一些「CloudKit內容文本」在一個CloudKit儀表板這個紀錄。 當通知在我的設備上觸發時,我在alertBody中看到「某些文本」文本,但我希望看到「CloudKit內容文本」。

我想這個通知顯示來自GlobalNotification記錄的content領域採取的字符串。我應該如何改變我的代碼來實現這一目標?

我讀過有關desiredKeys並嘗試添加info.desiredKeys = [「內容」],但它並沒有幫助。我也google了,但還沒有找到解決方案。

回答

1

你不能這樣做,只使用警報體。

有你需要的設置,使這項工作三個部分組成。您需要定義包含可更換參數的消息的字符串。然後你必須告訴你的通知使用該字符串。最後,你告訴你的通知將哪個記錄字段替換爲字符串。

首先,你需要一個鍵/字符串對添加到您的localizable.strings文件。在字符串中,您可以使用%n $ @指定要替換參數的位置,其中每個附加參數的「n」增量。

其次,在您的通知中,您需要將.alertLocalizationKey設置爲您在上面的字符串文件中指定的鍵名。

第三,在您的通知中,將.alertLocalizaionArgs屬性設置爲記錄中的字段名稱數組。

這款蘋果頁給出瞭如何使用可替換的參數構造字符串的例子:https://developer.apple.com/documentation/cloudkit/cknotificationinfo/1515182-alertlocalizationargs

這個問題也給出了一些示例代碼:(樣品1不起作用任何更多的後續樣品2)CloudKit notifications

相關問題