2016-09-25 64 views
1

我正在嘗試將Firebase整合到iMessage擴展中。Firebase存儲無法在iMessage擴展上工作

作爲一項測試,我設置了Firebase並嘗試將本地文件保存到viewDidAppear方法中的Firebase存儲中。 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

你可以試試'putData'而不是'putFile'嗎?我懷疑iMessage擴展可能會限制對文件系統的訪問(因爲它們位於與普通應用程序不同的沙盒中),並且獲取文件不起作用。 –

+0

感謝您的快速回答!你懷疑是對的,putData完美無缺。非常感謝!如果你寫一個答案,我可以接受它。 – Nilsymbol

回答

2

我有一個懷疑,iMessage的擴展可以得到文件系統的有限訪問(因爲他們住在一個不同的沙箱比普通的應用程序),因此得到的文件將無法正常工作。在這種情況下,putData工作,但putFile沒有。解決方案:始終上傳和下載內存(putDatadataWithMaxSize:)與文件系統(putFilewriteFile)。