Slide 1

Slide 1 text

@tsuboyan5 / Atsushi OTSUBO potatotips #86 iOS/Android開発Tips共有会 ~ LUUP でのLiveActivity 実装時のつまづきポイントを紹介 ~ Live Activity で アプリの利用体験を 向上させよう! 1

Slide 2

Slide 2 text

Luup, Inc. - Confidential and Proprietary 2 つぼやん Luup, inc. Mobile App Engineer X: @tsuboyan5 Like: ランニング / キャンプ / バイク / ものづくり 自己紹介 2

Slide 3

Slide 3 text

Luup, Inc. - Confidential and Proprietary 3 内容 Live Activity の概要 Live Activity の LUUP での活用 実装・リリースする上でつまずいたポイント まとめ 1 2 3 4 3

Slide 4

Slide 4 text

Luup, Inc. - Confidential and Proprietary 4 Live Activity ってなんぞ!? 4

Slide 5

Slide 5 text

LiveActivity について 5 ロック画面 Dynamic Island (ホーム画面)

Slide 6

Slide 6 text

LiveActivity について 6 ロック画面 Dynamic Island (ホーム画面)

Slide 7

Slide 7 text

Luup, Inc. - Confidential and Proprietary 7 ● ロック画面や Dynamic Island 上でリアルタイムに情報を表示するた めの機能 ● 本体のアプリとは別で動作する ● デフォルトではユーザに許可を求めなくても表示される Live Activity の概要 7

Slide 8

Slide 8 text

Luup, Inc. - Confidential and Proprietary 8 ● iOS 16.1 以上 ○ ただし、16.2 からAPI仕様が結構変わったので、16.2 以降で利用するの がオススメ ● Dynamic Island 対応機種 ○ iPhone 14 Pro / Pro Max ○ iPhone 15 無印 / Plus / Pro / Pro Max Live Activity が利用可能な条件 8

Slide 9

Slide 9 text

Luup, Inc. - Confidential and Proprietary 9 ● iOS 16.1 以上 -> iOS 16 以上のデバイスの割合:89% ※ ○ ただし、16.2 からAPI仕様が結構変わったので、16.2 以降で利用するの がオススメ ● Dynamic Island 対応機種 -> SEを除き最新機種は対応 ○ iPhone 14 Pro / Pro Max ○ iPhone 15 無印 / Plus / Pro / Pro Max Live Activity が利用可能な条件 ※ 2024/02/04 時点, AppStore にアクセスされた OS毎の計測結果 https://developer.apple.com/support/app-store/ 9

Slide 10

Slide 10 text

Luup, Inc. - Confidential and Proprietary 10 つまり Live Activity が 本領を発揮できる時代が到来 10

Slide 11

Slide 11 text

Luup, Inc. - Confidential and Proprietary 11 LUUP での活用 11

Slide 12

Slide 12 text

12 Luup とは? ミッション: ● 街じゅうを「駅前化」するインフラをつくる サービス: ● 電動アシスト自転車と電動キックボード の2種類の車両を提供 ● アプリで車両貸し出しが可能 12

Slide 13

Slide 13 text

Luup, Inc. - Confidential and Proprietary 13 LUUP での課題 13

Slide 14

Slide 14 text

Luup, Inc. - Confidential and Proprietary 14 車両を、返却し忘れるユーザがたまに発生 😱 ● 時間単位で課金されるため、高額な料金になる可能性 ● 他のユーザが利用できない LUUP での課題 14

Slide 15

Slide 15 text

Luup, Inc. - Confidential and Proprietary 15 車両を、返却し忘れるユーザがたまに発生 😱 ● 時間単位で課金されるため、高額な料金になる可能性 ● 他のユーザが利用できない 🤔 これらのユーザを救えないものか。 👉 Live Activity を使うことで、 アプリが閉じられていても、車両を利用中であることを ユーザに伝えられるかも!? LUUP での課題 15

Slide 16

Slide 16 text

Luup, Inc. - Confidential and Proprietary 16 作成した LiveActivity 16

Slide 17

Slide 17 text

Luup, Inc. - Confidential and Proprietary 17 ロック画面 17

Slide 18

Slide 18 text

Luup, Inc. - Confidential and Proprietary 18 Dynamic Island コンパクト表示 拡張表示 18

Slide 19

Slide 19 text

Luup, Inc. - Confidential and Proprietary 19 💡実装上のつまずきポイント 19

Slide 20

Slide 20 text

Luup, Inc. - Confidential and Proprietary 20 その1 ロック画面 / Dynamic Island どちらにも対応する必要がある 20

Slide 21

Slide 21 text

Luup, Inc. - Confidential and Proprietary 21 ロック画面 / Dynamic Island どちらにも対応する必要がある はじめはロック画面だけ実装するつもりだったが、実装上必ず両方記述が必要になって いた その1 - つまずきポイント 画像引用元: Displaying live data with Live Activities | Apple Developer Documentation https://developer.apple.com/jp/design/human-interface-guidelines/live-activities 21

Slide 22

Slide 22 text

Luup, Inc. - Confidential and Proprietary 22 その2 Dynamic Island のレイアウトには癖がある 22

Slide 23

Slide 23 text

Luup, Inc. - Confidential and Proprietary 23 Dynamic Island のレイアウトには癖がある レイアウトの制約 ● 色の使い方 ● マージンの設定 ● etc… 網羅すべき表示状態が複数ある ● コンパクト表示 ○ アプリが1つと2つの時で表示領域が変わる ● 拡張表示 その2 - つまずきポイント 画像引用元:ライブアクティビティ | Apple Developer Documentation https://developer.apple.com/jp/design/human-interface-guidelines/live-activities 23

Slide 24

Slide 24 text

Luup, Inc. - Confidential and Proprietary 24 レイアウトの制約 ● 背景は必ず黒 ● インカメラ部分を考慮した実装が必要 👉 制約について十分に理解した上でデザインする必要 その2 - つまずきポイント 24

Slide 25

Slide 25 text

Luup, Inc. - Confidential and Proprietary 25 その3 Live Activity は様々な要因で非表示にされる 25

Slide 26

Slide 26 text

Luup, Inc. - Confidential and Proprietary 26 Live Activity は様々な要因で非表示にされる ● 左スワイプで閉じられる (通知と同じ) ● 設定アプリからアプリごとにLiveActivityを不許可にできる ● 一定時間でOS側からkillされる ○ ロック画面では12時間、Dynamic Island では8時間 👉 表示したい時に表示されない可能性もある その3 - つまずきポイント 26

Slide 27

Slide 27 text

Luup, Inc. - Confidential and Proprietary 27 その4 Live Activity が要因でリジェクトされるリスク 27

Slide 28

Slide 28 text

Luup, Inc. - Confidential and Proprietary 28 LUUP では Live Activity が要因でリジェクトされた 1回目のリジェクト ● 審査官コメント:動作イメージを提出してもらわないと審査できないYO! ● Luupの対応:Live Activity の動作イメージを撮影して提出 2回目のリジェクト ● 審査官コメント:Widget は実装してます? ● Luupの対応:「Live Activity のみ実装してます」といった旨の返答 結果的には無事通過し、Live Activity 対応版(v1.73.0)を先週リリースしました🎉 その4 - つまずきポイント 28

Slide 29

Slide 29 text

Luup, Inc. - Confidential and Proprietary 29 ● LiveActivity が本領を発揮できる時代が到来 ○ iOS 16以上のデバイスや Dynamic Island 対応機種の増加 ● LUUP での課題の解決に、LiveActivity が役に立てられた ○ 返却忘れユーザに対して、借りっぱなしであることを伝えられる可能性 ○ あと、かっこいいので、開発者にとってはモチベになる (重要) ● つまずきポイントに注意 ○ レイアウトの制約・特殊性 ○ 非表示にされうる ○ リジェクトリスク まとめ 29

Slide 30

Slide 30 text

Luup, Inc. - Confidential and Proprietary 30 Luup Developers Blog で取り組みを発信しています! https://zenn.dev/p/luup_developers 宣伝 30

Slide 31

Slide 31 text

Luup, Inc. - Confidential and Proprietary 31 一緒に LUUP を開発するモバイルエンジニアも 絶賛募集しています! https://recruit.luup.sc/ 宣伝 31

Slide 32

Slide 32 text

32