狠狠撸

狠狠撸Share a Scribd company logo
App Shortcuts
Shibuya.apk #12
Namito Satoyama
?? 南? [Namito Satoyama]
メディアカンパニー 検索事業本部
Engineer / Yahoo! ブラウザー Product Manager
経歴
SIer (2001?)
IT Consulting(2006?)
CyberAgent, Inc(2010?)
DeNA Co., Ltd.(2013?)
Yahoo Japan Corp. (2014/09?)
活動
Shibuya.apk運営
共著:
「?帯エンジニアが教えるプロの技術
Android開発の教科書」(SB Creative)
Techblog執筆など
Photo by アフロ
What is the
App Shortcuts ?
App Shortcuts
□ API level 25+
□ 対応したランチャーアプリが必要
□ 最?5個設置できるが推奨は4個まで
https://developer.android.com/guide/topics/ui/short
cuts.html
ランチャーアイコン?押しでクイック
にアプリのタスクにアクセスできる
App Shortcuts Design Guideline
□ circular
□ LIVE AREA = 44dp x 44dp
□ TOTAL AREA = 48dp x 48dp
(LIVE AREA + padding 2dp)
https://commondatastorage.googleapis.com/android
developers/shareables/design/app-shortcuts-design-
guidelines.pdf
□ Material Grey 100
Pinned Shortcuts
□ 設置数無制限
□ ピン留めしたショートカット
はアプリから消せない
App Shortcutsからランチャーへ
ショートカットを「ピン留め
(Pinned)」できる
□ アプリから無効化はできる
Static / Dynamic Shortcuts
Static Dynamic
削除 ? ?
更新
△
(要アプリ更新)
?
?途例
メッセージ送信 /
アラームの設定 …
特定の?への電話/
特定の場所へのナビゲーション…
実装時にShortcutがStaticかDynamicかを選ぶ
□ ?般的なアクション→Static Shortcuts
□ 特定の状況に特化→Dynamic Shortcuts
Implement
【static】AndroidManifest.xml
<?xml version=“1.0” encoding=“utf-8”?>
<manifest xmlns:android=“http://schemas.android.com/apk/res/android”
package=“shortcut.sample.yahoo.co.jp.shortcutsample”>
<application
android:allowBackup=“true” android:icon=“@mipmap/ic_launcher”
android:label=“@string/app_name” android:supportsRtl=“true”
android:theme=“@style/AppTheme”>
<activity android:name=“.MainActivity”>
<intent-filter>
<action android:name=“android.intent.action.MAIN” /> <!-- 必須 -->
<category android:name="android.intent.category.LAUNCHER" /> <!-- 必須 -->
</intent-filter>
<meta-data android:name="android.app.shortcuts"
android:resource="@xml/app_shortcuts" />
</activity>
<activity android:name=".SubActivityForStatic"/>
<activity android:name=".SubActivityForDynamic"/>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:enabled="true"
android:icon="@drawable/ic_appshortcuts_static_sample_with_circle"
android:shortcutId="shortcut_id_sample"
android:shortcutShortLabel="@string/shortcut_label_static">
<!-- 遷移先を指定したintent -->
<intent
android:action=”android.intent.action.VIEW"
android:targetClass="jp.co.mysample.shortcutsample.SubActivityForStatic"
android:targetPackage=”jp.co.mysample.shortcutsample">
</intent>
<categories android:name="android.shortcut.conversation" />
</shortcut>
</shortcuts>
【static】res/xml/app_shortcuts.xml
shortcutDisabledMessage
【static】parameter
enabled=“false”
public void addShortcut(final Context context) {
// SDK_INT < 25なら抜ける
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
return;
}
// SDK_INT >= 25 ならAppShortcutを設定
addShortcutIfTargetVersion(context);
}
@TargetApi(Build.VERSION_CODES.N_MR1)
private void addShortcutIfTargetVersion(final Context context) {
// ショートカット追加処理
}
【dynamic】API Level Check(あたりまえのやつ)
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
// ショートカット情報の設定
ShortcutInfo shortcut = new ShortcutInfo.Builder(this, ”shortcut_id_dynamic“)
.setShortLabel(”Web site“)
.setLongLabel(”Open the web site“)
.setIcon(Icon.createWithResource(context, R.drawable.icon_website))
.setIntent(new Intent(Intent.ACTION_VIEW,
Uri.parse(”https://www.mysite.example.com/“)) // 遷移先を指定したIntent
)
.build();
try {
// DynamicShortcutsリストをセット
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));
} catch (IllegalArgumentException iae) {
// if getMaxShortcutCountPerActivity() is exceeded, or when trying to update immutable shortcuts.
} catch (IllegalStateException ise) {
// when the user is locked.
}
【dynamic】ShortcutManager
// DynamicShortcutsリストを再構築
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));
// 既存のリストに追加
shortcutManager.addDynamicShortcuts(Arrays.asList(shortcut));
// 既存のDynamicShortcutを更新
shortcutManager.updateShortcuts(Arrays.asList(shortcut));
// 任意のDynamicShortcutを削除
shortcutManager.removeDynamicShortcuts(Arrays.asList(shortcut));
// DynamicShortcut全てを削除
shortcutManager.removeAllDynamicShortcuts();
【dynamic】methods
【 Tips 】ShortcutManager#reportShortcutUse
// ショートカットが利用されたときに履歴を残す
shortcutManager.reportShortcutUse(”shortcut_id”);
reportShortcutUseを呼んで
おくと、履歴閲覧に対応するア
プリ(ホームアプリなど)で、
履歴の数が多いショートカット
を誘導してくれる。
(かもしれない)
■API Diff 24→25
Activity
shortcut
shortcut
Fragment
<!-- 遷移先を指定したintent -->
<intent
android:action=”【独自アクション】“
android:targetClass=”【同じActivity】"
android:targetPackage=”jp.co.mysample.shortcutsample">
</intent>
同じActivityに対して、ショー
トカット別に、独?Actionを定
義して振り分ける
【Tips】?び先を同じActivityにしたい場合
Activity
■ 同じActivityのFragmentをショー
トカット別に開き分けたい場合
■ 共通のActivityで処理した結果に
よって、別のActivityに?ばすような
場合
<!-- 遷移先を指定したintent -->
<intent
android:action=”【独自アクション】“
android:targetClass=”【同じActivity】"
android:targetPackage=”jp.co.mysample.shortcutsample">
<extra android:name=”from" android:value=”AppShortCuts" />
</intent>
extraを定義
【Tips】遷移時のIntentにパラメータを?れたい場合
■ ロギングなどのために、任意の画?への遷移元を知りたい場合など
驰补丑辞辞!ブラウザーでの事例
Yahoo!ブラウザーへ導?してみた
□ QRコードリーダー(static)
以下のショートカットを実装
□ ?声検索(static)
□ Yahoo!検索(static)
□ よく?るサイト(dynamic)
現時点でどのくらい使われているのか
■ Android7.1以上のDAU=3,500程度
■ 直近のタップ数
各機能、
ほぼ5件/?以下!
0件の?もある!
今顽张って実装しなくていいよ!
その他
LauncherAPIもAppShortcuts対応
■API Diff 24→25
AppShortcutsに関
わるメソッドが追加
まとめ
AppShortcutsで起動導線の幅
が広がる!
?アイコンにガイドラインあり。
?static/dynamicがある。うまく使いわけましょ。
?履歴に保存しておくとランチャーアプリでうまく
露出できるかも。
?Active率(DAU/MAU)の向上に期待したいけど、現時
点でユーザーの認知ほぼゼロ。
Thanks!
Ad

Recommended

Firebase update from io'17
Firebase update from io'17
Namito Satoyama
?
[CT10] CTO とチョークトーク! 私たちがクラウド時代/AI時代に求める技術者
[CT10] CTO とチョークトーク! 私たちがクラウド時代/AI時代に求める技術者
de:code 2017
?
20190311 tech on-x_r_final
20190311 tech on-x_r_final
Hideki Ojima
?
础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り
础苍诲谤辞颈诲エンジニアになってからの1年间の感想と振り返り
ichirokato5
?
奥别产制作者视点で理解するソフトェアテスト
奥别产制作者视点で理解するソフトェアテスト
祐磨 堀
?
if-up 2019 | C3. コンシューマープロダクトにおけるクラウド実践
if-up 2019 | C3. コンシューマープロダクトにおけるクラウド実践
SORACOM,INC
?
Angular でもっとAPIファースト?もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト?もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
?
Bonfire API #1 APIのリトライ処理
Bonfire API #1 APIのリトライ処理
驰补丑辞辞!デベロッパーネットワーク
?
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
Developers Summit
?
日本?海外の事例からみる动画広告を使ったゲームアプリのマネタイズ超入门
日本?海外の事例からみる动画広告を使ったゲームアプリのマネタイズ超入门
Yasuyuki Kamata
?
ハイブリットソーシャルゲームの现场
ハイブリットソーシャルゲームの现场
Shota Suzuki
?
モバイル対応鲍颈部品を利用したレスポンシブ飞别产アプリ开発
モバイル対応鲍颈部品を利用したレスポンシブ飞别产アプリ开発
Satoru Yamaguchi
?
今更はじめるQuartz Composer
今更はじめるQuartz Composer
祐磨 堀
?
アプリのプロダクトマネージャーからみる厂肠谤耻尘开発
アプリのプロダクトマネージャーからみる厂肠谤耻尘开発
驰补丑辞辞!デベロッパーネットワーク
?
20160930冲03冲ロボットアプリ开発における、最适な鲍齿を生み出すコツ
20160930冲03冲ロボットアプリ开発における、最适な鲍齿を生み出すコツ
滨辞罢ビジネス共创ラボ
?
Osc html5-monaca
Osc html5-monaca
Hikaru Ito
?
全社デザインシステムとサービスの付き合い方
全社デザインシステムとサービスの付き合い方
驰补丑辞辞!デベロッパーネットワーク
?
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
驰补丑辞辞!デベロッパーネットワーク
?
エクストリーム?プログラミング開発におけるUIテスト #yjbonfire
エクストリーム?プログラミング開発におけるUIテスト #yjbonfire
驰补丑辞辞!デベロッパーネットワーク
?
础搁颁辞谤别アプリを作ってみよう
础搁颁辞谤别アプリを作ってみよう
ichirokato5
?
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Takuji Kawata
?
Unity Services
Unity Services
Yasuyuki Kamata
?
スマホ业界とエンジニアのキャリア形成
スマホ业界とエンジニアのキャリア形成
Namito Satoyama
?
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
驰补丑辞辞!デベロッパーネットワーク
?
础础搁滨のご绍介
础础搁滨のご绍介
Automation Anywhere Japan
?
今日から始める笔谤辞诲耻肠迟惭补苍补驳别谤
今日から始める笔谤辞诲耻肠迟惭补苍补驳别谤
Namito Satoyama
?
Billing Library 2.0 Overview
Billing Library 2.0 Overview
Namito Satoyama
?
VP of Engineeringとしての組織変革への挑戦
VP of Engineeringとしての組織変革への挑戦
Namito Satoyama
?

More Related Content

What's hot (19)

Bonfire API #1 APIのリトライ処理
Bonfire API #1 APIのリトライ処理
驰补丑辞辞!デベロッパーネットワーク
?
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
Developers Summit
?
日本?海外の事例からみる动画広告を使ったゲームアプリのマネタイズ超入门
日本?海外の事例からみる动画広告を使ったゲームアプリのマネタイズ超入门
Yasuyuki Kamata
?
ハイブリットソーシャルゲームの现场
ハイブリットソーシャルゲームの现场
Shota Suzuki
?
モバイル対応鲍颈部品を利用したレスポンシブ飞别产アプリ开発
モバイル対応鲍颈部品を利用したレスポンシブ飞别产アプリ开発
Satoru Yamaguchi
?
今更はじめるQuartz Composer
今更はじめるQuartz Composer
祐磨 堀
?
アプリのプロダクトマネージャーからみる厂肠谤耻尘开発
アプリのプロダクトマネージャーからみる厂肠谤耻尘开発
驰补丑辞辞!デベロッパーネットワーク
?
20160930冲03冲ロボットアプリ开発における、最适な鲍齿を生み出すコツ
20160930冲03冲ロボットアプリ开発における、最适な鲍齿を生み出すコツ
滨辞罢ビジネス共创ラボ
?
Osc html5-monaca
Osc html5-monaca
Hikaru Ito
?
全社デザインシステムとサービスの付き合い方
全社デザインシステムとサービスの付き合い方
驰补丑辞辞!デベロッパーネットワーク
?
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
Yahoo!カレンダーにおける技術移行について - Legacy Meetup Kyoto -
驰补丑辞辞!デベロッパーネットワーク
?
エクストリーム?プログラミング開発におけるUIテスト #yjbonfire
エクストリーム?プログラミング開発におけるUIテスト #yjbonfire
驰补丑辞辞!デベロッパーネットワーク
?
础搁颁辞谤别アプリを作ってみよう
础搁颁辞谤别アプリを作ってみよう
ichirokato5
?
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Takuji Kawata
?
Unity Services
Unity Services
Yasuyuki Kamata
?
スマホ业界とエンジニアのキャリア形成
スマホ业界とエンジニアのキャリア形成
Namito Satoyama
?
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
驰补丑辞辞!デベロッパーネットワーク
?
础础搁滨のご绍介
础础搁滨のご绍介
Automation Anywhere Japan
?
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
【16-贰-4】残业ゼロで开発スピードが10倍に!もう元の开発体制には戻れないデンソー流のアジャイル开発
Developers Summit
?
日本?海外の事例からみる动画広告を使ったゲームアプリのマネタイズ超入门
日本?海外の事例からみる动画広告を使ったゲームアプリのマネタイズ超入门
Yasuyuki Kamata
?
ハイブリットソーシャルゲームの现场
ハイブリットソーシャルゲームの现场
Shota Suzuki
?
モバイル対応鲍颈部品を利用したレスポンシブ飞别产アプリ开発
モバイル対応鲍颈部品を利用したレスポンシブ飞别产アプリ开発
Satoru Yamaguchi
?
今更はじめるQuartz Composer
今更はじめるQuartz Composer
祐磨 堀
?
20160930冲03冲ロボットアプリ开発における、最适な鲍齿を生み出すコツ
20160930冲03冲ロボットアプリ开発における、最适な鲍齿を生み出すコツ
滨辞罢ビジネス共创ラボ
?
础搁颁辞谤别アプリを作ってみよう
础搁颁辞谤别アプリを作ってみよう
ichirokato5
?
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Takuji Kawata
?
スマホ业界とエンジニアのキャリア形成
スマホ业界とエンジニアのキャリア形成
Namito Satoyama
?

More from Namito Satoyama (15)

今日から始める笔谤辞诲耻肠迟惭补苍补驳别谤
今日から始める笔谤辞诲耻肠迟惭补苍补驳别谤
Namito Satoyama
?
Billing Library 2.0 Overview
Billing Library 2.0 Overview
Namito Satoyama
?
VP of Engineeringとしての組織変革への挑戦
VP of Engineeringとしての組織変革への挑戦
Namito Satoyama
?
骋辞辞驳濒别アシスタントアプリの基本からマルチデバイス対応まで
骋辞辞驳濒别アシスタントアプリの基本からマルチデバイス対応まで
Namito Satoyama
?
谁でもできる骋辞辞驳濒别アシスタント开発
谁でもできる骋辞辞驳濒别アシスタント开発
Namito Satoyama
?
Google Assistant Apps
Google Assistant Apps
Namito Satoyama
?
What's new with Android TV
What's new with Android TV
Namito Satoyama
?
App bundle
App bundle
Namito Satoyama
?
厂厂惭尝でできること
厂厂惭尝でできること
Namito Satoyama
?
中国のスマホ市场
中国のスマホ市场
Namito Satoyama
?
Play Billing Library
Play Billing Library
Namito Satoyama
?
はし?めてのActions ongoogle
はし?めてのActions ongoogle
Namito Satoyama
?
Actions on Google #Umeda.apk
Actions on Google #Umeda.apk
Namito Satoyama
?
Introduction of Eddystone
Introduction of Eddystone
Namito Satoyama
?
Potatotips_7
Potatotips_7
Namito Satoyama
?
今日から始める笔谤辞诲耻肠迟惭补苍补驳别谤
今日から始める笔谤辞诲耻肠迟惭补苍补驳别谤
Namito Satoyama
?
Billing Library 2.0 Overview
Billing Library 2.0 Overview
Namito Satoyama
?
VP of Engineeringとしての組織変革への挑戦
VP of Engineeringとしての組織変革への挑戦
Namito Satoyama
?
骋辞辞驳濒别アシスタントアプリの基本からマルチデバイス対応まで
骋辞辞驳濒别アシスタントアプリの基本からマルチデバイス対応まで
Namito Satoyama
?
谁でもできる骋辞辞驳濒别アシスタント开発
谁でもできる骋辞辞驳濒别アシスタント开発
Namito Satoyama
?
厂厂惭尝でできること
厂厂惭尝でできること
Namito Satoyama
?
はし?めてのActions ongoogle
はし?めてのActions ongoogle
Namito Satoyama
?
Actions on Google #Umeda.apk
Actions on Google #Umeda.apk
Namito Satoyama
?
Ad

Recently uploaded (7)

Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
色について.pptx .
色について.pptx .
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Ad

App shortcuts