2016-09-25 6 views
1

FirebaseをiMessageエクステンションに統合しようとしています。FirebaseストレージがiMessageエクステンションで動作しない

Firebaseを設定し、viewDidAppearメソッドでFirebase Storageにローカルファイルを保存しようとしています。 Firebaseリアルタイムデータベースは、以下のコードで正常に動作しますが、ストレージ部分だけが動作しません。

通常のアプリ(、つまりiMessage拡張子ではない)で正確に同じコードが機能します。

は、私は、次のエラーメッセージが出ます:

Error Domain=FIRStorageErrorDomain Code=-13000 
"An unknown error occurred, please check the server response." 
UserInfo={ResponseErrorDomain=NSURLErrorDomain, object=test.jpg, 
bucket=myapp.appspot.com, ResponseErrorCode=-995, 
`NSLocalizedDescription=An unknown error occurred, please check the server response. 

私がやっているが、以下の:彼らが住んでいるので

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    FIRApp.configure() 

    FIRAuth.auth()?.signInAnonymously { (user, error) in 
     guard let fileURL = Bundle.main.url(forResource: "test", withExtension:"jpg") else { return } 

     let storageRef = FIRStorage.storage().reference().child("test.jpg") 
     storageRef.putFile(fileURL, metadata: nil) { (metaData, error) in //produces error 
     if error != nil { 
      print(error.debugDescription) 
     } 
     } 
     FIRDatabase.database().reference().updateChildValues(["someKey" : "someValue"]) // works fine 

    } 
    } 
+2

あなたは 'putFile'の代わりに' putData'を試すことができますか?私は、iMessageの拡張機能がファイルシステムへのアクセスを制限されている可能性があるという疑いがあります(通常のアプリケーションとは異なるサンドボックスに住んでいるため)。 –

+0

お返事ありがとうございます!あなたは疑いがありました、putDataは完璧に動作します。どうもありがとう!あなたが答えを書くなら、私はそれを受け入れることができます。 – Nilsymbol

答えて

2

私は(IMessageが拡張は、ファイルシステムへのアクセスが制限され得ることが疑いを持っています通常のアプリとは異なるサンドボックス内にあるため)、ファイルを取得することはできません。この場合、putDataが動作しますが、putFileは動作しません。解決策:ファイルシステム(putFileおよびwriteFile)と比較して、常にメモリ(putDataおよびdataWithMaxSize:)をアップロードしてダウンロードしてください。

関連する問題