はじめに
cordova にプッシュ通知機能を実装したので手順をメモしておきます。
2020/3/30 追記
本記事とは別のライブラリを使ったパターンの記事を見つけました
僕はまだ試していないのですが、より最新かつ人気のライブラリを使っているのでこちらを使う方がいいかもしれません!
Vue + Cordova + Firebase でプッシュ通知
追記終わり
環境
- cordova-plugin-fcm-with-dependecy-updated: 3.2.0
- cordova-ios: 4.5.5
- cordova-android: 7.1.4
準備
- ios は GoogleService-Info.plist
- android は google-services.json
が必要です。
以下のページを参考にして取得してから cordova ルートフォルダに置いてください。
https://firebase.google.com/docs/ios/setup
【ios】設定追加
GoogleService-Info.plist に以下の2行を追加する
1 | <key>FirebaseAppDelegateProxyEnabled</key> |
【ios】サーバ登録用の証明書ファイル作成
プッシュ用の証明書を作成する
以下を参考にして p8 ファイルをダウンロードして firebase に登録する
p8 ファイルは複数アプリで使い回し可能
https://qiita.com/matsuyoro/items/77408e5d09ef00be8577
※UI が古いけど慌てない。やることは同じ。まずは左の Keys を押そう。
【ios】アプリにプッシュ設定を追加
- 以下のページから対象のアプリを選択する
https://developer.apple.com/account/resources/identifiers/list - Push Notifications を有効にする
- Configure ボタンを押す
プッシュ通知用の Certificate を2つ作成してダウンロードしてダブルクリックでキーチェーンに登録する
Provisioning Profile を再作成する
【android】アプリ ID が一致しているかを確認
- 修正方法
config.xml の<widget id="com.hoge"
と
google-services.json の
1 | { |
の com.hoge
の部分が一致していないとビルド時に以下のエラーになるので一致しているか確認しておく
- 対象エラー
> No matching client found for package name 'com.hoge'
ちなみに僕はここに-
を使っていたらエラーになりました
ライブラリインストール
https://www.npmjs.com/package/cordova-plugin-fcm-with-dependecy-updated
cordova ルートフォルダで以下のコマンドを実行する
1 | cordova plugin add cordova-plugin-fcm-with-dependecy-updated |
※2019/10/29 時点で最新版は 4.1.0 ですがこれだとFCMPlugin is not definedのエラーになったので 3.2.0 版を指定してます
2020/1/22 追記
上記のバグは 4.1.1 で解消済みだった
【ios】準備
cordova ルートフォルダでsudo gem install cocoapods
で CocoaPods をインストールする
sudo なので Mac の管理者ログインパスワードを入力する
pod setup
15 分ほど待つ
今後 XCODE を開く際は/platforms/ios/ 配下の .xcodeproj ファイルではなく .xcodeworkspace ファイルを選択して XCode を開く
【ios】Xcode 設定
Capabilities タブで Push Notifications と Background Modes を ON にして Remote Notifications にチェックを入れておく。
XCode > File > Project Settings… > Build System > Legacy Build System を選択してから再ビルドする
参考:https://github.com/fechanique/cordova-plugin-fcm/issues/553
これをしないとプッシュが届かない
以下のエラーが出るようになるけど無視で OK
問題なくプッシュは届きます
1 | ** ARCHIVE SUCCEEDED ** |
プッシュ機能を実装
1 | register_push() { |
ビルド
hoge の部分はアプリ名に変えてください
ios
1 | # plist配置 |
android
1 | # google-services.json配置 |
参考
Cordova iOS アプリ + phonegap-plugin-push でリモートプッシュ通知機能を実装するための全工程
おわりに
最初修正バージョンのライブラリがあることを知らなくてめちゃくちゃハマって大変でした、、
プッシュ出来ると良い感じのアプリっぽくなって良いですよね〜(語彙力
ではよきプッシュ通知ライフを〜。
以上です