Upgrade to Pro — share decks privately, control downloads, hide ads and more …

5プラットフォームをサポートしているプッシュ通知SDKをFCMに移行した話

Avatar for Victor Lee Victor Lee
January 28, 2019

 5プラットフォームをサポートしているプッシュ通知SDKをFCMに移行した話

Avatar for Victor Lee

Victor Lee

January 28, 2019
Tweet

More Decks by Victor Lee

Other Decks in Programming

Transcript

  1. 2019/1/28 reveal.js http://localhost:8000/?print-pdf 3/25 WHAT WHAT アプリのグロスハックのためのSDK プッシュ通知 / アプリ内メッセージ

    / ABテスト / アナリティックス / ... 5プラットフォーム対応! iOS, Android Unity, Cocos2d-x, Cordova Webも も始 始めた めた! ! => Repro for Web
  2. 2019/1/28 reveal.js http://localhost:8000/?print-pdf 4/25 4000万 万デバイス デバイス 4000万 万デバイス デバイスで動作

    で動作 月 月間 間20億 億個 個プッシュ プッシュ通知 通知 月 月間 間20億 億個 個プッシュ プッシュ通知 通知を配信 を配信
  3. 2019/1/28 reveal.js http://localhost:8000/?print-pdf 8/25 実装してAPI叩いたのに届かない 実装してAPI叩いたのに届かない SENDER_ID合ってる? google-services.json合ってる? Noti cation

    Channel作った? Receiver/FirebaseMessagingServiceを登録した? 端末許諾してる?マナーモード? ... 他にも、アイコンが出ない、バッジの数字が違う、タ ップした遷移先が違う、……
  4. 2019/1/28 reveal.js http://localhost:8000/?print-pdf 17/25 maven repositoryのpomファイルからはFirebaseラ イブラリーへの依存を削除する (GCM時代からやっている) => FCMに依存しない

    pom.whenConfigured {pom -> pom.dependencies.removeAll(pom.dependencies.findAll {dep -> dep.groupId == 'com.google.android.gms' || dep.groupId == }) }
  5. 2019/1/28 reveal.js http://localhost:8000/?print-pdf 18/25 Firebaseを使う前にre ectionで確認する => バージョンが違ってもクラッシュはしない static void

    getPushRegistrationId(final Callback callback) { if (!isFirebaseInstanceIdAvailable()) { return; } Task<InstanceIdResult> task; try { task = FirebaseInstanceId.getInstance().getInstanceId(); } catch (NoSuchMethodError e) { return; } task.addOnCompleteListener(...) } private static boolean isFirebaseInstanceIdAvailable() { try { Class.forName("com.google.firebase.iid.FirebaseInstanceId } catch (ClassNotFoundException e) { return false; }
  6. 2019/1/28 reveal.js http://localhost:8000/?print-pdf 24/25 GOOGLE SERVICES GOOGLE SERVICES GRADLE PLUGIN

    の逆襲 GRADLE PLUGIN の逆襲 異なるpluginでそれぞれのbuild.gradleで実行する と、エラーが出る => Repro Cordova Pluginの で、 しなかったときだけ する if(project.plugins.findPlugin("com.google.gms.google-services") = apply plugin: com.google.gms.googleservices.GoogleServicesPlu }