この記事が良かったら
i_factory さんへの応援になります

使えるように準備するまでがそこそこ大変なのはiOSの制約が、、、、、
この記事が良かったら
i_factory さんへの応援になります
「アプリを探す時間」を消したくて iPhone のランチャーを作ったら、iOS の壁が2枚あった
日常から「アプリを探す」という動作をなくしたい。それだけのために作りました。
できたことより、どうにもならなかったことのほうが書く価値があると思うので、そちらを厚めに書きます。
ホーム画面を何ページもめくって、目的のアプリを探している時間があります。
1回は数秒でも、1日に何度もやっています。
多くの人はそれを「整理」で解決しようとします。フォルダを作って、並べ替えて、使わないものを別ページへ追いやる。
でもアプリは増え続けるので、整理は終わりません。ずっと整理し続けることになります。
だったら、並びのほうが動けばいいと考えました。
いまの時刻・曜日・いる場所・移動しているかどうかから、「次に開きそうなアプリ」を上に出す。
そうすれば探す必要も、整理する必要も減るはずです。
作ったのは iOS のランチャーです。本体の画面と、ホーム画面に置くウィジェットの両方に、同じ並びを出します。
先回りするには、その人がいつ何を開いたかを覚える必要があります。ここが最初の壁でした。
iOS には、他のアプリの起動を知る方法がありません。
⇒ このアプリを経由して開いたぶんしか記録できません。
つまり、ホーム画面から直接 LINE を開いた回数は、こちらからは永久に見えません。
覚えられるのは、アプリの中のアイコンを押したときと、ウィジェットから開いたときだけです。
これは回避策のある話ではなく、そういうものだという話です。
なので、アプリの中でも起動前の案内でも、そのまま書くことにしました。隠すと「学習しないアプリ」だと思われて終わるからです。
覚えるのは、この中のアイコンを押したときと、ウィジェットから開いたときだけです。
ホーム画面から直接開いたぶんは記録されません(iOS が、他のアプリの起動を教えてくれないためです)。
1枚目の壁から、そのまま2枚目が生えてきます。
iOS には、端末に入っているアプリを列挙する API もありません。分かるのは「この URL スキームを開けるアプリが在るか」だけで、しかも Info.plist のLSApplicationQueriesSchemes に先に書いておいた 50 件までしか問い合わせられません。
いま 50 件、空き 0 です。⇒ 1つ足すには、どれかを外すしかありません。
そこで有名どころ 53 件を持っておいて在否を確かめる形にしましたが、
そこに無いアプリは利用者に自分で登録してもらうしかありません。
先回りしたいのに、まず登録作業をお願いすることになる。ここがいちばん申し訳ない部分です。
登録が遅いのは、UI の作りが悪いからではありませんでした。
「そのアプリが本当に開けるか」を確かめるには、実際に開いてみるしかありません。そして開いた瞬間、こちらのアプリは背面に回ります。⇒ 次の1件へ進めません。
しかも open は「開いた」としか返しません。何が開いたかは返しません。twitter:// を開いたつもりで別のアプリが立ち上がっていても、こちらには区別がつきません。
⇒ 確かめられるのは利用者の目だけです。戻ってきた人に「いま開いたのは合っていましたか?」と聞く形にしました。
自動化を何通りか試して、全部ここに突き当たりました。
「開く → 背面に回る → 目で確認 → 戻る」が1件の最小単位で、これは縮められません。
全部あきらめたわけではありません。1か所だけ抜け道がありました。
ユニバーサルリンクで開けるアプリは、提供元がhttps://<ドメイン>/.well-known/apple-app-site-association に正式な宣言を公開しています。
ここに書かれた appID が App Store の bundleId と一致すれば、それが正しい開き方だと確定できます。推測ではありません。そしてこの確認は、何も開かずに済みます。
⇒ この段だけは、名前を何十件まとめて渡しても走らせられます。
実測してみました。手元の端末に入っていた 67 件のうち 21 件(31%)が、1回も画面を切り替えずに確定しました。
残りの 69% は bundleId からの推測になるので、結局1件ずつ目で確かめてもらうことになります。
3割しか減らせませんでした。ただ、減らせるところが確かに在ったのは収穫でした。
手元のデータで測った的中率です。
1位が当たる73.7%3位以内に入る91.7%完璧に読めた場合の上限90.5%
上限が 90.5% なのは、予測の出来の問題ではありません。
同じ時刻・同じ場所でも、人は違うアプリを開くからです。⇒ 「必ず1位」は原理的に届きません。
なので、宣伝でも画面でも「必ず」「絶対」は書かないことにしました。
一方で、その場所でしか使わないアプリがある場所(ジムや美容院、お店の会員証など)は、
手元の計測では1位に出続けています。効くところと効かないところが、はっきり分かれるようです。
登録の手間は、まだ諦めていません。
ユニバーサルリンクで開けるアプリは今後も増えるので、開かずに確定できる割合は上がっていくはずです。
31% がどこまで伸びるか、しばらく測ってみます。
同じところで詰まった方がいたら、抜け道を知っていたらぜひ教えてください。