Firebase 存储不适用于 iMessage 扩展
Firebase Storage not working on iMessage extension
我正在尝试将 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
}
}
我怀疑 iMessage 扩展程序可能会限制对文件系统的访问(因为它们与普通应用程序位于不同的沙箱中),因此无法获取文件。在这种情况下 putData
有效,但 putFile
无效。解决方案:总是在内存中上传和下载(putData
和dataWithMaxSize:
)而不是文件系统(putFile
和writeFile
)。
我正在尝试将 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
}
}
我怀疑 iMessage 扩展程序可能会限制对文件系统的访问(因为它们与普通应用程序位于不同的沙箱中),因此无法获取文件。在这种情况下 putData
有效,但 putFile
无效。解决方案:总是在内存中上传和下载(putData
和dataWithMaxSize:
)而不是文件系统(putFile
和writeFile
)。