Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

AppStore Reviewガイドラインで、アカウント削除機能がマストになった件

qiita.com

If your app supports account creation, you must also offer account deletion within the app.

今後新規に作るアプリが対象になるのかなぁ。5年前に作ったアプリはログイン前提でアカウント登録の動線すらないけど、昨年アップデート申請したら通ったという経験があるため。Androidはノータッチでいいんだけど、iOSは実にうるさい。アカウントに紐付けないサービスなんて、ほとんどないと思うんですけど。まぁ、多分、削除への動線だけ付けたら問題ないやつだとは思いますが。

今ウチが運営しているサービスは、BtoBの受発注アプリ。カタログPDFをアップするとアプリに画像が反映されて、商品データと紐付けて発注ができるよっていうやつ。面倒なのが、アプリなのに完全クローズドな世界であること。アプリのインストールは誰でも出来るよ〜でも使える人はこのサービスを契約している会社が許可したユーザーしかダメだよ〜っていうモデルになっているので、Appleからするとわかりにくい。

ログイン前提でアプリを作ってしまうと、特定の企業向けのアプリなら別のライセンス使えよカスって言われるのよね。なので、必ずアカウント登録の導線が必要になって文句言われた。MetaData Rejected.を2回食らってる。説明したら通ったけど。

アプリの良い点は、だいたいこんな感じ。

  • アイコンがスマホのスクリーンにデフォルトで置ける事
  • プッシュ通知が出来ること
  • カメラの制御ができること(写真アップやバーコードのスキャン)
  • バッジが使えること
  • ローカルにデータを溜め込んで置けること
  • (作り方次第になっているけど)ブラウザに比べると、サクサク動くこと

アプリが概ね完成したので、Nuxtでブラウザベースのクライアントを作り始めている。PWAにする予定。

PWAで(正確にはPWA for iOS)で使えないのが、バッジとPUSH通知。PUSH通知はSlack/LINE通知などに委託すればできるので、あんまり困らない気がする。バッジは、NPMのパッケージがあったりするので、それでいけるのかな。

PWAをなんで作ろうかと思ったかというと、PCユーザーが一定数いるのと、アプリ並みにサクサク動くものが作れるなら運用保守がアプリより楽だから。審査も要らない・課金も自由。AppStoreのガイドラインのせいで、万が一アプリの更新や継続が難しくなったらどうするかという心配が、3.34%ほどある。

アプリで難しかったのが、スクロールビューにおけるピンチイン・ピンチアウト。これがFlutterですごい苦戦した。iOSの写真アプリは、スクロールをサポートしつつも、ピンチイン・ピンチアウトでグリッドの列数が動的に変化する。これが絶妙な制御によって成り立っている。Flutterでどこまでやれるか再現したくて1日費やしたけど、全然ダメでした。 ブラウザだと余裕でピンチイン・ピンチアウトが拾いやすく、iOSの写真アプリっぽいUXを提供できる気がしている。

ちなみに、Gridviewのセル内画像読み込みも結構辛い。GridViewに100枚ぐらい画像を載せてWeb経由で読み込ませると、かなり遅かった。1MBの画像とか絶対に出してはならない。画像については、素直にCloudinaryを使ってある程度画質を犠牲にして軽くした。カタログ画像なので、あんまり横幅が小さいとゴミに見えるのが辛いけど、デバイスを縦に持ったときの横幅ぐらいに収めると、20KBぐらいまで落とせた。

NuxtでPWAを覚えてリリースできれば、クローズドベータは終わりになるぜ。