2017-02-09 15 views
3

iOSアプリケーションのサンドボックスに保存されたデータに、Notification-Service-Extensionインスタンス内からアクセスする方法はありますか?私はcontenhandlerを渡す前に、データベースからいくつかのデータを取得したい。iOS:UNNotificationServiceExtensionの内部からアプリの保存データにアクセスするにはどうすればよいですか?

私は私の

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { 
      ... 
      print("NotificationService didReceive UNNotificationRequest, contentHandler: \(contentHandler)") 

      let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 
      let filePath = "\(documentsPath)/Database.db" 

      print(" documentsPath: \(filePath)") 

      let fileManager = FileManager.default 
      var isDir : ObjCBool = false 
      if fileManager.fileExists(atPath: filePath, isDirectory:&isDir) { 
       if isDir.boolValue { 
        print(" file exists and is a directory") 

       } else { 
        print(" file exists and is a NOT a directory") 
       } 
      } else { 
       print("file does not exist") 
      }... 

内部からテストされ、拡張子が独自のドキュメントフォルダを持つ独自のサンドボックスを持っているように私のためにそれが見えます。

拡張子が '/ var/mobile/Containers/Data /'の中の 'PluginKitPlugin'フォルダを使用している間、アプリケーションはフォルダ 'Application'を使用します。

更新日:アプリのサンドボックスコンテナに到達できないようです。

答えて

3

アプリ拡張機能プログラミングガイドのアプリ拡張機能は、アプリグループを使用して​​にできます。

読む:

if let defaults = UserDefaults(suiteName: "my.app.group") { 
    if let value = defaults.value(forKey: "key") { 
     NSLog("\(value)") 
    } 
} 

書き込み:また

  • MMWormhole

    if let defaults = UserDefaults(suiteName: "my.app.group") { 
        defaults.set("value", forKey: "key") 
    } 
    

    :iOSのアプリや拡張機能の間を通過するメッセージ。

  • Wormhole:iOSアプリと拡張機能の間でメッセージをやり取りするための、より洗練された方法です。
+0

おかげさまでありがとうございます。私のアプリケーションデータベースにアクセスするには、共有コンテナにコピーする必要があります。私が好むソリューションではありません。本当に面白いです。 – headkit

+0

あなたの答えを編集して「不可能」を追加すると、それを受け入れたとマークすることができます。 – headkit

関連する問題