Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

今からでも大丈夫!Firebase入門

10,036 views

Published on

今からでも大丈夫!Firebase入門でのスライドです。

Published in: Software
  • Be the first to comment

今からでも大丈夫!Firebase入門

  1. 1. Firebase 初めてでも大丈夫、Firebaseの使い方とハマるポイントを解説!
  2. 2. 自己紹介 名前 古賀 友規 所属 株式会社ビズリーチ スタンバイ事業部/アプリエンジニア 出身地 福岡
  3. 3. こんなん作ってます
  4. 4. リニューアル当初導入した機能 ● Analytics ● Cloud Messaging ● Notifications ● Remote Config
  5. 5. 現在使用している機能 ● Analytics ● Cloud Messaging ● Notifications ● Remote Config ● Authentication ● Realtime Database ● Dynamic Links ● Invite(今後導入予定)
  6. 6. 現在使用している機能 ● Analytics ● Cloud Messaging ● Notifications ● Remote Config ● Authentication ● Realtime Database ● Dynamic Links ● Invites(今後導入予定) 本日お話しする部分}
  7. 7. Firebaseについて
  8. 8. Firebaseって何? BaaS (Backend as a Service)のひとつ
  9. 9. 料金は?
  10. 10. 無料で使える機能と有料の機能 無料で使える機能 ● Analytics ● App Indexing ● Authentication ● Cloud Messaging ● Crash Reporting ● Dynamic Links ● Invites ● Notifications ● Remote Config 有料の機能 ● Realtime Database ● Storage ● Hosting ● Test Lab ● Google Cloud Platform (BigQuery etc)
  11. 11. Firebase Analytics
  12. 12. Analyticsの特徴 AnalyticsはFirebaseのコアとなる機能!
  13. 13. Analyticsの特徴 ● 他の機能と連携可能 ● イベントベースの計測 ● iOS / Android対応 ● 料金は無料!(*) * BigQueryを使う場合は別途料金が発生
  14. 14. Analyticsの導入(iOS) 1. CocoaPods経由でSDKをインストール 2. AppDelegateでSDKを初期化 application:didFinishLaunchingWithOptions:メソッド内に実装 # Podfile pod ‘Firebase/Core’ # pod install FIRApp.configure()
  15. 15. Analyticsの導入(Android) 1. Gradle経由でSDKをインストール # build.gradle compile 'com.google.firebase:firebase-core:9.6.1'
  16. 16. イベントを送る ● iOS ● Android FIRAnalytics.logEventWithName(kFIREventSelectContent, parameters: [ kFIRParameterContentType:"image", kFIRParameterItemID:"1" ]) mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.ITEM_ID, “1”); bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image"); mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
  17. 17. イベントには2種類ある ● 手動で送るもの ● 自動で送られるもの
  18. 18. イベントには2種類ある 自動で送られるイベントの一例 ● first_open ● session_start ● notification_open 自動で送られるイベントの一覧 https://support.google.com/firebase/answer/6317485?hl=ja&ref_topic=6317484
  19. 19. イベント名・パラメータ名には2種類ある ● 独自に定義するイベント・パラメータ カスタムイベント・カスタムパラメータ ● デフォルトで用意されているイベント・パラメータ
  20. 20. イベント名・パラメータ名には2種類ある デフォルトで用意されているイベント・パラメータの一例 デフォルトで用意されているイベント・パラメータの一覧 https://support.google.com/firebase/answer/6317498?hl=ja&ref_topic=6317484 イベント名 パラメータ名 select_content content_type、item_id add_to_cart quantity、item_category、item_name、item_id、item_location_id、 value、price、currency
  21. 21. イベントを送る際の制限 ハマりポイント! パラメータとして送る値は「36文字」までの制限がある エラーログを見落とさないように!
  22. 22. 他にもある制限 イベント登録数 500 イベントに付与するパラメータ数 25 ユーザープロパティ登録数 25 ユーザーリスト登録数 50
  23. 23. ユーザープロパティを設定する ● iOS ● Android FIRAnalytics.setUserPropertyString(food, forName: "favorite_food") mFirebaseAnalytics.setUserProperty("favorite_food", mFavoriteFood);
  24. 24. Webコンソールの機能 5つの切り口から分析を行える ● イベント ● ユーザー ● アトリビューション ● 目標到達プロセス ● コホート
  25. 25. イベント
  26. 26. イベント
  27. 27. イベント ● イベント数 ● ユーザー数 ● ユニークユーザー数 ● セッションあたりのイベント数 ● イベントが発生した国や地域 ● イベントを発生させたユーザーの属性(性別・年齢) *カスタムパラメータ値は見ることができません
  28. 28. ユーザー 指定した条件でユーザーをセグメントできる機能 ユーザーリストに日々追加されるユーザー数の推移や、リストに含まれるユーザーの 属性をレポート画面から確認できる。 作成したユーザーリストを使って、Analytics以外の機能と連携できる。 例)プッシュ通知を送る等
  29. 29. ユーザー
  30. 30. ユーザー ハマりポイント! ユーザーリストを作成した時点では、ユーザーリスト中のユーザー数は0 作成以降に、その条件に合致するユーザーが発生しないとユーザーリスト中のユー ザーは増えない また条件を満たさなくなっても、ユーザーリストから除外されることはない。
  31. 31. アトリビューション どのソース・広告ネットワークからのユーザーがコンバージョンを生んでいるか分析で きる機能
  32. 32. 目標到達プロセス 一連のステップ(イベント)の完了率を可視化して分析できる機能
  33. 33. コホート ユーザーの維持率を分析する機能
  34. 34. マイレポート マイレポートで確認可能な項目 ● アクティブユーザー数 ● 平均収益(ARPU / ARPPU) ● ライフタイムバリュー (LTV) ● 維持率コホート ● ユーザーエンゲージメント(平均セッション継続時間等) ● アプリバージョン ● デバイス(モデル・OSバージョン) ● 場所(国・地域) ● ユーザー属性(年齢・性別)
  35. 35. 詳細な分析をするには? BigQueryを使いましょう! 計測したデータはすべてBigQueryに格納されている
  36. 36. スタンバイでの 事例 デイリーでデータを エクスポート Redshiftからデータを 取得して可視化
  37. 37. Cloud Messaging / Notifications
  38. 38. Cloud Messaging (FCM) の特徴 ● クロスプラットフォーム対応の通知ソリューション iOS / Android / Chrome (Web Push) に対応 ● プラットフォーム毎のメッセージの差異はFCMが吸収 ● HTTP/XMPPプロトコルによるメッセージの送信 ● 無料!
  39. 39. 使い方 下記エンドポイントにPOSTでメッセージを送信する https://fcm.googleapis.com/fcm/send 宛先には、いづれかを指定可能 ● 通知トークン ● 通知キー ● トピック その他の指定可能なパラメータ https://firebase.google.com/docs/cloud-messaging/http-server-ref
  40. 40. メッセージの種類 通知 データ 通知+データ notificationのみを含むメッセー ジ dataのみを含むメッセージ notificationとdataの両方を含む メッセージ { "to" : "bk3RNwTe3H0:CI2k_HH...", "notification" : { "body" : "great match!", "title" : "Portugal vs. Denmark" } } { "to" : "bk3RNwTe3H0:CI2k_HH...", "data" : { "Nick" : "Mario", "body" : "great match!" } } { "to" : "APA91bHun4MxP5ego...", "notification" : { "body" : "great match!", "title" : "Portugal vs. Denmark" }, "data" : { "Nick" : "Mario" } }
  41. 41. メッセージの種類によって処理方法が違う @Android アプリの状態 通知 データ 通知+データ フォアグラウンド onMessageReceived onMessageReceived onMessageReceived バックグラウンド システムトレイ(*) onMessageReceived システムトレイ(*) * アプリがバックグラウンドの状態で通知を受けると、 onMessageReceivedでメッセージが処理されず、 そのままシステムトレイに通知が入る。
  42. 42. システムトレイに表示されるアイコンが変 @Android 何のアイコンが使われるのか? manifestのapplicationに指定しているランチャーアイコンが使われる。 ただし、そのまま使われる訳ではない! manifestで指定している ランチャーアイコン Notification作成時に指定している アイコン
  43. 43. システムトレイに表示されるアイコンが変 @Android 通知メッセージにiconの情報を含めてあげれば任意のアイコン(*)を指定できる。 *drawable内にあるアイコンファイル名を指定します。 { "to" : "bk3RNwTe3H0:CI2k_HH...", "notification" : { "body" : "great match!", "title" : "Portugal vs. Denmark", "icon": "ic_lancher" } }
  44. 44. システムトレイに表示されるアイコンが変 @Android ちなみに。。 WebのNotificationsから送る場合はアイコンの指定ができません。 その場合は諦めるか、ランチャーアイコンを差し替えましょう。
  45. 45. システムトレイに直接入ったメッセージを開いた時 に任意のActivityを開くには?@Android 通知メッセージとアクティビティを繋ぐための情報を追加する。 <activity android:name=".HogeActivity" android:label="@string/title_activity_hoge" > <intent-filter> <action android:name="HOGE_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
  46. 46. システムトレイに直接入ったメッセージを開いた時 に任意のActivityを開くには?@Android 通知オブジェクトに開きたいアクティビティの情報を付与する。 { "to" : "APA91bHun4MxP5ego...", "notification" : { "body" : "great match!", "title" : "Portugal vs. Denmark", "click_action": "HOGE_ACTIVITY" }, "data" : { "Nick" : "Mario" } }
  47. 47. システムトレイに直接入ったメッセージを開いた時 にデータを参照するには?@Android Intentのextrasから参照することができます。 Bundle extras = getIntent().getExtras(); if (extras != null) { String value = extras.getString("parameter"); Log.d(TAG, value); }
  48. 48. データメッセージが届かない?! @iOS アプリの状態 通知 データ 通知+データ フォアグラウンド APNs FCM APNs バックグラウンド APNs FCM APNs
  49. 49. データメッセージが届かない?! @iOS FCMに接続するコードを書いておきましょう! 詳細なサンプルコードについては以下の URLを参照 https://github.com/firebase/quickstart-ios/blob/master/messaging/FCMSwift/AppDelegate.swift FIRMessaging.messaging().connectWithCompletion { (error) in guard let error = error else { print("Connected to FCM.") return } print("Unable to connect with FCM. (error)") }
  50. 50. Notificationsの特徴 ● Webのコンソールから通知を送信することが可能 ● シンプルな操作 HTTP APIで可能な細かい設定はできない
  51. 51. Notificationsでのみ可能な操作 1. 通知ターゲットの指定 ユーザーリスト、特定アプリバージョン、特定言語に対する配信 2. 開封率・コンバージョン率の計測 3. 予約配信
  52. 52. Notificationsが送信するメッセージの種類 以下の2パターンのみです。 ● 通知 ● 通知+データ Notificationsではデータのみのメッセージを送ることはできません。
  53. 53. 現在GCMを使っている場合はどうする? @Android GCMの処理を丸ごとFCMに置き換えることができます。(*1) FCMはGCMと互換性があります。 そのため、FCMトークンをGCMで使うこともできます。(*2) *1. マイグレーションガイドがあります https://developers.google.com/cloud-messaging/android/android-migrate-fcm *2. FCMトークンをGCM用のAPIに渡しても正常にプッシュ通知が飛ぶことを確認しました。 https://gcm-http.googleapis.com/gcm/send
  54. 54. Remote Config
  55. 55. Remote Configの特徴 ● アプリのリリースなしに設定変更が可能 ● Webのコンソールで簡単に設定変更が可能 ● それぞれの条件に応じた設定値を持つことが可能
  56. 56. Remote Configを設定する パラメータキーとデフォルト値を設定するだけ!
  57. 57. それぞれの条件に応じた設定値を持たせる 条件に応じて設定値を出し分けるための手順 1. 条件を作る 2. 条件に合致した時の値を設定する
  58. 58. それぞれの条件に応じた設定値を持たせる 設定可能な条件 ● アプリID ● アプリバージョン ● OSの種類 ● ユーザー(ランダム%) ● ユーザーリスト ● 端末の地域/国 ● 端末の言語 ● ユーザープロパティ
  59. 59. それぞれの条件に応じた設定値を持たせる
  60. 60. それぞれの条件に応じた設定値を持たせる
  61. 61. 活用事例① コンテンツ内容のコントロール
  62. 62. 活用事例② アプリの強制バージョンアップ

×