Slide 1

Slide 1 text

2020.10.28 (Wed) 集まれKotlin好き!Kotlin愛好会 vol.25 @オンライン @the_uhooi 苦戦! の実装 リモートプッシュ通知

Slide 2

Slide 2 text

iOS app developer ️ Kotlin 愛好会初登壇

Slide 3

Slide 3 text

オリジナルモンスター図鑑 累計 100 万 DL (予定) / 主要画面数: 2

Slide 4

Slide 4 text

お知らせ機能を追加しました

Slide 5

Slide 5 text

採用したサービス

Slide 6

Slide 6 text

採用したサービス Firebase Cloud Messaging (FCM)

Slide 7

Slide 7 text

リモートプッシュ通知の流れ

Slide 8

Slide 8 text

リモートプッシュ通知の流れ 【ユーザー】お知らせの通知チャネルを作成する(初回起動時)

Slide 9

Slide 9 text

リモートプッシュ通知の流れ 【ユーザー】お知らせの通知チャネルを作成する(初回起動時) ↓ 【ウホーイ】Firebase のコンソールから FCM の通知を送る

Slide 10

Slide 10 text

リモートプッシュ通知の流れ 【ユーザー】お知らせの通知チャネルを作成する(初回起動時) ↓ 【ウホーイ】Firebase のコンソールから FCM の通知を送る ↓ 【ユーザー】プッシュ通知を受け取る

Slide 11

Slide 11 text

実装の詳細 https://github.com/uhooi/UhooiPicBook-Android/pull/57

Slide 12

Slide 12 text

苦戦したこと①: 通知チャネルの概念がわからない

Slide 13

Slide 13 text

「通知チャネル」とは?

Slide 14

Slide 14 text

「通知チャネル」とは? ・ざっくりいうと「通知の種類」のこと

Slide 15

Slide 15 text

「通知チャネル」とは? ・ざっくりいうと「通知の種類」のこと ・Android 8.0 で追加された機能

Slide 16

Slide 16 text

「通知チャネル」とは? ・ざっくりいうと「通知の種類」のこと ・Android 8.0 で追加された機能
 ・通知の送信前にチャネルを作成する必要がある

Slide 17

Slide 17 text

苦戦したこと②: バナー表示されない

Slide 18

Slide 18 text

importance を HIGH にするとバナー表示される

Slide 19

Slide 19 text

苦戦したこと③: アイコンが黒い丸になる

Slide 20

Slide 20 text

アイコンをモノクロかつ背景を透過にして解決

Slide 21

Slide 21 text

でも YouTube はカラー…

Slide 22

Slide 22 text

苦戦したこと④: FG で受け取ると null になる

Slide 23

Slide 23 text

ただの実装漏れw

Slide 24

Slide 24 text

ただの実装漏れw FCM から受け取った通知をもとに、プッシュ通知を 構築して送付する処理を実装する必要があった

Slide 25

Slide 25 text

ただの実装漏れw FCM から受け取った通知をもとに、プッシュ通知を 構築して送付する処理を実装する必要があった BG で通知を受け取ると、 FCM で設定したタイトルとテキストがそのまま表示される

Slide 26

Slide 26 text

コードを修正して解決

Slide 27

Slide 27 text

苦戦したこと⑤: バイブしない .setDefaults(Notification.DEFAULT_SOUND or Notification.DEFAULT_VIBRATE)

Slide 28

Slide 28 text

権限とバイブ時間の指定が必要

Slide 29

Slide 29 text

権限とバイブ時間の指定が必要

Slide 30

Slide 30 text

権限とバイブ時間の指定が必要 .setVibrate(longArrayOf(0, 1000, 500, 1000))

Slide 31

Slide 31 text

わからないこと①: 謎のフラグ

Slide 32

Slide 32 text

わからないこと②: チャネル関連定数の定義場所

Slide 33

Slide 33 text

まとめ

Slide 34

Slide 34 text

まとめ ・FCM を使えば無料でリモートプッシュ通知を実現できる

Slide 35

Slide 35 text

まとめ ・FCM を使えば無料でリモートプッシュ通知を実現できる ・実装は難しいが、公式ドキュメントが充実している

Slide 36

Slide 36 text

まとめ ・FCM を使えば無料でリモートプッシュ通知を実現できる ・実装は難しいが、公式ドキュメントが充実している ・アドバイスやレビューありがとうございました m(_ _)m