2017-10-28 7 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ダッシュボードに追加し、CloudKitダッシュボードのこのレコードのcontentフィールドに「CloudKit content Text」を追加します。 デバイス上で通知が発生すると、alertBodyに「Some text」というテキストが表示されますが、「CloudKit content text」が表示されることがあります。

この通知で、GlobalNotification Recordのcontentフィールドから取得した文字列を表示します。これを達成するためにコードをどのように変更する必要がありますか?

私はdesiredKeysについて読んで、info.desiredKeys = ["content"]を追加しようとしましたが、それは役に立たなかった。私もグーグルではありますが、解決策は見つけられていません。

答えて

1

アラートの本文のみを使用して行うことはできません。

この作業を行うためにセットアップする必要があるコンポーネントは3つあります。置換可能なパラメータを含むメッセージで文字列を定義する必要があります。その後、その文字列を使用するように通知する必要があります。最後に、どのレコードフィールドを文字列に置き換えるかを通知します。

まず、localizable.stringsファイルにキー/文字列のペアを追加する必要があります。この文字列では、%n $ @を使用してパラメータを置換する場所を指定します。ここで、「n」は追加パラメータごとに増分します。

第2に、通知で、上記のstringsファイルで指定したキー名に.alertLocalizationKeyを設定する必要があります。

第3に、通知で、レコードのフィールド名の配列に.alertLocalizaionArgsプロパティを設定します。

このアップルのページには、交換可能なパラメータを指定して文字列を作成する方法の例を示します:https://developer.apple.com/documentation/cloudkit/cknotificationinfo/1515182-alertlocalizationargs

この質問はまた、いくつかのサンプルコードを示しています(サンプル1は、もはや機能しないサンプル2に従ってください。)CloudKit notifications

関連する問題