Firebaseは私にとってとても新しいものです。私はFirebaseでアプリを構築するためのYoutubeのチュートリアルを見ました。残念ながら、FirebaseからImageのURLにアクセスしようとするとエラーが発生します。なぜなら、URLをコンソールに出力してブラウザのアドレスバーにコピーして貼り付けるまでは、なぜエラーが出るのかわかりません。Firebaseデータベースのルール - 画像アクセスを拒否する(iOS)
Firebaseからコード403 - Access denied
を取得しました。私も問題を解決するためにGoogleを使ってみましたが、何も変わりませんでした。私は自分のデータベースルールを書き直しましたが、うまくいきません。私を助けてください。
私のコード
extension UIImageView
{
func skin() {
self.layer.cornerRadius = 20
self.clipsToBounds = true
}
func loadAvatar(link:String){
let queue:DispatchQueue = DispatchQueue(label: "LoadingImage", qos: DispatchQoS.default, attributes: DispatchQueue.Attributes.concurrent, autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency.inherit, target: nil)
let activity:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)
activity.frame = CGRect(x: self.frame.size.width/2, y: self.frame.size.height/2, width: 0, height: 0)
activity.color = UIColor.blue
self.addSubview(activity)
activity.startAnimating()
queue.async {
let url:URL = URL(fileURLWithPath: link)
do{
let data:Data = try Data(contentsOf: url)
DispatchQueue.main.async(execute: {
activity.stopAnimating()
self.image = UIImage(data: data)
})
}catch{// my app always jump into catch because can access image
activity.stopAnimating()
print("Error ")//error
}
}
}
}
私はLoadavatar機能と呼ばれる場所:
extension ScreenListFriendViewController : UITableViewDataSource, UITableViewDelegate {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return listFriend.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ScreenListFriendTableViewCell
cell.lblName.text = listFriend[indexPath.row].fullname
cell.imgAvatar.loadAvatar(link: listFriend[indexPath.row].linkAvt)
return cell
}
}
マイFirebaseデータベースルール:
:{ "rules": { ".read": true, ".write":true } }
マイ画像のURLは次のようになります
https:/firebasestorage.googleapis.com/v0/b/appchat-e1cc4.appspot.com/o/images%[email protected]%3Falt=media &トークン= 275419bf-c0a4-4fc5-932e-624df797f9d3
注:ます。https:/私は唯一の1 /
を得た理由は、私は知りません。
PS:私はXcodeの8を使用し、スウィフト3
あなたは 'GoogleService-Info.plist'ファイルを追加しましたか? –
エラー403はFirebaseデータベースではなくイメージホストからのものです。 URLはどのように見えますか? –
@FrankvanPuffelen私の質問を編集してください。URLを確認してください。 – Kency