[firebase_functions/unavailable] UNAVAILABLE エラーが発生した時の対処法
この記事を読むより下記のリンク先を見たほうが早いかもです。
発生状況
Flutterプロジェクト
Cloud Functions for Firebaseのエミュレータを使用
androidのエミュレータから呼び出し可能関数を実行
発生原因
android側で、クリアテキストの通信がデフォルトで拒否される設定になっていることが原因だと思われます。(Cloud Functions for FirebaseのエミュレータはHTTPSではなくHTTPで通信するため)
解決法
クリアテキストの通信を許可するような設定にすればよいです。
具体的にはFlutterのプロジェクトフォルダ > android > app > src > main > AndroidManifest.xmlのアプリケーションタグに
<application
...
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config">
上記のようにandroid:usesCleartextTraffic="true", android:networkSecurityConfig="@xml/network_security_config"を追加します。
次にFlutterのプロジェクトフォルダ > android > app > src > main > resフォルダの直下にxmlフォルダを作成し、xmlフォルダの直下にnetwork_security_config.xmlファイルを作成します。
↓ network_security_config.xmlの中身
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain>10.0.2.2</domain>
</domain-config>
</network-security-config>
以上の修正を行い、再度実行してみたところ正常に動かすことができました!
↓ 参考までに
さいごに
このエラーを消すのに結構な時間がかかりましたので、備忘録的に残しておきます。皆様のお役に立てれば幸いです。