今回はFirebase Cloud Messagingを用いたAndroidアプリを作ります。
このCloud Massagingというサービスはその名の通り、Firebaseというクラウドを使ってAndroidやiOSなどのアプリケーションにメッセージを届ける、いわゆるプッシュ通知を可能にするサービスです。
Firebaseとは?
今回はFirebaseは当然ながらアプリ開発のバックエンドに使います。
Firebaseって何?という方のためにご説明すると、Firebaseはいわゆるクラウドのバックエンドシステムがパッケージ化されているサービスです。
活用法としては、アプリのアクセス解析やアプリのプッシュ通知機能の実装をとてつもなく早く可能にしてしまうことが出来るので、プロトタイピングや概念実証などのプロジェクト初期の活用はもちろん、そのままサービスをスケールさせてもある程度は耐えうるスケーラビリティあるバックエンドシステム設計が出来る点にあります。
Android Studioをインストールして新しいアプリ作成
Android Studioをまだインストールしてないという人はこちらからダウンロードして下さい。Android Studioを起動後、新しく作成するアプリは「EmptyActivity」を選択して下さい。
Firebaseに登録する新しいプロジェクトをつくる
Firebaseに登録すると以下のような画面が表示されます。
「プロジェクトを追加」をクリックし、プロジェクト名と国を設定します。
プロジェクト名はわかりやすいものであれば何でも構いません。
作成したFirebaseプロジェクトに、先程Android Studioで作成したAndroidアプリを追加します。
keytoolが文字化けして読めないときの解決法
アプリをFirebaseに追加する際にデバッグ用の署名証明書が必要です。
証明書は「~/.android/debug.keystore」というファイルに入っているものになります。
このdebug.keystoreというファイル自体はAndroid StudioでBuildする際に自動的に作成されるファイルなのですが、証明書のSHA-1をどうやって入手するかご存知でしょうか。
アプリをFirebaseに追加する際にSHA-1を入力する画面は以下のとおりです。
「デバッグ用の署名証明書SHA-1(省略可)」と記載のあるところに入力したいのですが、SHA-1がどこにあるのかわからなかったため、「?」マークをクリックし、リンク先を参照しました、以下のGoogleのサイトをチェックしました。
Authenticating Your Client
https://developers.google.com/android/guides/client-auth
しかし、ここにかいてあるコードをそのまま入力したところ文字化けが発生しました。
そこでKeytoolのエンコードを変えることで対処しました。
まずこのコマンドでvimをつかって「.bash_profile」を編集します。
vi ~/.bash_profile
ファイルが開けたら一番下に以下のコードを追加します。
export _JAVA_OPTIONS='-Dfile.encoding=UTF-8'
初心者向けですがターミナル上でvimを編集するのは少しばかりコツが要ります。
もし、上手くできない場合はこちらを参考にしてみて下さいね。
Vim/Viの終了のさせ方
https://qiita.com/kon_yu/items/b8864ff566b8b67a9810
編集が終わったら、一度ターミナルを閉じて再起動すればOKです。
「キーストアのパスワードを入力して下さい」の対処法
文字化け対策のためにすこしそれてしまいましたが、改めてFirebaseにアプリを追加する作業に戻ります。SHA-1を得るため、ターミナルから以下のコードを入力します。
keytool -exportcert -list -v \ -alias androiddebugkey -keystore ~/.android/debug.keystore
すると以下の画面が表示されます。
「キーストアのパスワードを入力して下さい」というメッセージが出ます。このときに思い当たるパスワードがある人はそちらを入力します。
私は手当たり次第に使いそうなパスワードを何度もトライしましたが、どれも違っていたので挫けそうになりました。しかし、私はこれまでAndroidアプリを作ったことがないことに気づき、初期設定でのパスワードを調べたところ「なし」ということがわかりました。
ですので、何も入力せずにReturnを押すと以下のようにSHA-1が表示されます。
***************** 警告 警告 警告 ***************** * キーストアに保存された情報の完全性は検証されて * * いません! 完全性を検証するには、キーストアの * * パスワードを入力する必要があります。 * ***************** 警告 警告 警告 ***************** 別名: androiddebugkey 作成日: 2018/08/07 エントリタイプ: PrivateKeyEntry 証明連鎖の長さ: 1 証明書: 所有者: C=US, O=Android, CN=Android Debug 発行者: C=US, O=Android, CN=Android Debug シリアル番号: 1 有効期間の開始日: Tue Aug 07 16:01:53 GMT+09:00 2018 終了日: Thu Jul 30 16:01:53 GMT+09:00 2048 証明書のフィンガープリント: MD5: P2:XX:0A:1B:98:15:XX:C3:94:1E:F4:XX:87:21:8C:XX SHA1: XX:VC:AA:CC:94:CC:XX:D3:7Y:B7:XX:01:XX:13:A0:XX:0B:4B:OO:XX 署名アルゴリズム名: SHA1withRSA バージョン: 1
当然ながらMD5やSHA-1はそれぞれ異なりますので上をコピペしてはいけません。
google-services.json ファイルを Android アプリ モジュールの ルート ディレクトリに移動
次にSHA-1を無事Firebaseに入力した後、JSONファイルをAndroidのアプリモジュールのルートに追加しなくてはなりません。
Android Studioの左上、Projectより作成したプロジェクト名のフォルダをクリックします。すると下の画像のように、「.gradle」や「.idea」、「app」といったフォルダが見えるかと思います。
その中の「app」にダウンロードしたJSONファイルをドラッグ・アンド・ドロップして下さい。すると「Move」というウィンドウが出てきますので「OK」を押して下さい。これで完了です。
参考にさせていただいたサイト
Macでkeytoolコマンドの文字化け対処法
http://kmiya.grgrjapan.com/archives/2327
keytool -list -keystore .android/debug.keystore のパスワードって??http://ria10.hatenablog.com/entry/20121101/1351787425