はじめに
Cordova で Repro とカスタム URL スキームを使ってディープリンクを扱う方法。
TL;DR
- EddyVerbruggen/Custom-URL-scheme をインストール
- Content Security Policy の設定変更
config.xml変更(allow-intent,config-file追加)window.handleOpenURLを定義
- ディープリンクを設定して Repro プッシュ通知を送信
Cordova で Repro とカスタム URL スキームを使ってディープリンクを扱う方法。
config.xml 変更(allow-intent, config-file 追加)window.handleOpenURL を定義firebase/firebaseui-web による Firebase Authentication の認証 UI でパスワードの強度チェック(文字数や文字種のルール設定)を行う方法。
firebase/firebaseui-web による Firebase Authentication の認証 UI をローカライズ(日本語化)する方法。
script に __{LANGUAGE_CODE} を付けるLANGUAGE_CODE は LANGUAGES.md 参照1 | -<script src="https://www.gstatic.com/firebasejs/ui/4.7.3/firebase-ui-auth.js"></script> |
Chrome 拡張機能で Firebase Authentication を使って認証する方法。
signInWithEmailAndPassword で実施Stripe & Firebase によるサブスクリプションを試した際のメモ。
status と current_period_end を使えば OKFirebase 公式ドキュメント Firebase による支払い処理 を試した際のメモ。
Cordova Android アプリで HTTP(≠ HTTPS) 通信をした際に出る net::ERR_CLEARTEXT_NOT_PERMITTED エラーの解決方法
cleartextTrafficPermitted="false" がデフォルトになったAndroidManifest.xml に android:usesCleartextTraffic="true" を追加すれば HTTP 通信を許可できるplatforms/android/app/src/main/AndroidManifest.xmlconfig.xml に edit-config を追加すれば OKCordova Android で iframe 内のリンクをシステムデフォルトブラウザで開く方法。
前置きなどは 親 Window で iframe からのデータ受信、イベント検出する方法 の「前置き」と同じ。
以下はとあるプロジェクトの要件など。
- Cordova で iOS/Android まとめて開発
- コンテンツ内部は先方が作成
- コンテンツ内に先方管理外のサイトへのリンクがある
- ガワはこちらで作成して、コンテンツを
iframeで読み込むiframe内のリンクをシステムデフォルトブラウザで開きたいiOS は問題なかった(意図通りに動作した)が、Android だけ上手く動かなかった。具体的には、リンクをタップすると
iframe内で開こうとするが、X-Frame-Options の設定によりnet::ERR_BLOCKED_BY_RESPONSEとなる、というもの。
iframe 側: postMessage でリンク先 URL を送信preventDefault で元イベント(リンク先を iframe 内で開こうとするアクション)を抑止created, beforeDestroy フックでイベントリスナを 追加/削除親 Window で iframe から送られてきたデータを受信したり、iframe 内のイベントを検出する方法。
※イベント検出もデータ送受信機能で実現しているので、厳密にはイベント検出(addEventListener 相当)ではない。
iframe 側から window.postMessage でデータ送信targetOrigin を適切に指定(可能なら)addEventListener('message', handler) で受信ハンドラ設定event.origin で送信元をチェックiframe で読み込むサイトが管理外の場合は実現不可(のはず)Cordova iOS アプリで長押し(ロングタップ, ロングプレス)によるコンテキストメニューを無効化する方法。
config.xml を設定SuppressesLongPressGesture, Suppresses3DTouchGesture を true