はじめに
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.xml
config.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