產品群經理
透過全新的連結應用程式平台,您可以將應用程式服務直接整合至 Gemini、Google 搜尋的 AI 模式和 Android 智慧系統。本課程提供實用指南,協助您踏出第一步。我們將透過程式碼範例和實際案例研究,逐步介紹開發生命週期:建構、測試及發布第一個連結應用程式,在 AI 輔助的工作流程中觸及使用者。
完成本課程後,您將能夠:
destructiveHint,讓 Gemini 在動作會修改或刪除資料時,明確要求確認。轉錄稿
大家好
我是 Mai,目前擔任 Gemini 連結的應用程式平台產品負責人。
稍後,開發人員關係工程師 Kate 也會與大家分享。
她要上台了。
今天,我們很高興能與大家分享,如何將應用程式擴充至 Google 最受歡迎的代理產品:Gemini 和 Google 搜尋。
我們將說明連結的應用程式如何為使用者提供實用、神奇的體驗,以及背後的原理。
更棒的是,我們還會說明如何建構這類模型。
現在就切入正題吧。
相信許多人都注意到,應用程式生態系統發生了重大變化。
使用者操作裝置、搜尋答案和完成工作的方式,不只是在演變,
已徹底改變。
人們不再開啟瀏覽器並四處點選。
而是直接與 Gemini 等助理對話。
他們會透過 Google 搜尋,以多模態方式向 Gemini 提出複雜問題,尋找答案。
他們希望 Android 裝置不只能理解他們說的話,還能知道他們想完成什麼事。
想想您在任何一天可能執行的工作流程。
假設您請 Gemini 幫忙發想一些點子,想在特定時間和地點與朋友共度有趣的週末。
現今的模型只要幾秒鐘就能處理完畢。
太棒了。
井然有序。
接下來呢?
結束。
使用者遇到阻礙,只能停留在原地,只有計畫,沒有任何確認。
模型知道該怎麼做,但無法實際執行。
因此,你必須將與 Gemini 對話中的資訊複製並貼到其他應用程式。
有時在行動裝置上,會變得很笨重。
你必須記住所有內容,然後再輸入。
這種認知落差和不便會完全破壞魔法。
這對各位有什麼影響?
這表示您有高意願的使用者需求,但他們受限於聊天泡泡,無法進入應用程式,成為高價值且高參與度的使用者。
這就是為什麼連結應用程式能帶來顛覆性的改變,因為這類應用程式能協助我們在使用者所在之處與他們互動。
目前,他們會花大量時間與 Gemini 等助理對話。
當使用者表達出實際行動意圖時,就是他們歷程中的關鍵時刻。
而不是被動瀏覽。
他們有明確想立即完成的事。
只要整合應用程式和這些生成式模型,Gemini 等助理就能從回答問題,進階到協助完成工作。
當使用者要求優先處理待辦事項清單、想租車準備近期行程,或想購買剛找到的食譜食材時,您的應用程式不會以靜態連結的形式出現在頁面底部。
你可以協助實現這項神奇功能,並立即執行該動作。
我想特別強調一點,因為我知道每位開發人員和產品主管都在思考這個問題:連結應用程式並不是要將應用程式抽象化。
您的品牌、商業邏輯、經過驗證的關係和自訂 UI 體驗,全都屬於您。
連結應用程式是指將服務整合至代理 API 介面,讓 Google 的代理產品能順暢地將高意願使用者直接帶往您的產品。
因此,今天我非常高興能正式宣布推出連結的應用程式平台。
過去,如要透過 Google 產品觸及使用者,必須分別整合各項產品。
如要使用 Android 應用程式動作或捷徑,必須自行建構。
另一個搜尋整合項目。
但我們希望盡可能為你提供最輕鬆、最棒的體驗。
因此,我們將新手上路流程標準化,讓您能透過單一入口,在多項 Google 代理產品中推出應用程式。
現在,您只要使用標準宣告式結構定義建構應用程式功能,就能在 Gemini 和 Google 搜尋這兩項重要產品中啟用。
我們也即將推出更多產品。
接下來,我們將說明觸及率,以及這對您的意義。
您不應該為了觸及 Android、Gemini 和 Google 搜尋的使用者,而必須建構多個自訂外掛程式、管理四個不同的開發人員控制台,以及維護各種經過驗證的信號交換。
有了我們的整合式平台,您只需建構及註冊工具定義一次,
您只要選擇所需的 Google 產品,就能透過新版 Google Connected Console 的單一啟動按鈕,輕鬆開始使用。
發布後,任何人都能在 Gemini 或 Google 搜尋中找到你的功能。
無論使用者是在筆電上輸入 Gemini 提示、在網頁上搜尋一系列查詢,還是在 Android 上使用 Google 助理功能,都能在最需要的時候,直接使用您的應用程式。
因此,我們將分階段開放平台,首先推出預先發布版。
請放心,整個團隊正全力以赴,希望盡快讓更多人使用所有功能。
在預先發布版的這個階段,我們僅開放美國開發人員使用平台。
您可以填寫表單申請存取權,表單位於開發人員指南 (developers.google.com/connected-apps),如果您是 Play 開發人員,也可以在 Google Play 管理中心首頁找到。
下一個問題是,實際建構這類模型有多難?
如果您有 REST API 或 Android 意圖,就已經有很好的起點。
我們是以開發人員熟悉的概念為基礎。
我們的平台透過伺服器端和 Android 原生 MCP,與 Model Context Protocol (MCP) 標準整合。
為了讓您更輕鬆地使用 Gemini,我們今天推出全新功能「開發人員模式」,美國的所有使用者現在都能使用。
您可以在 Gemini 中試用應用程式,即時取得錯誤狀態、延遲時間和模型回覆的意見回饋。
不久後,您將能生成自己的評估集,取得品質指標評量表和基準。
一定會很棒。
無論您在平台上的存取權為何,都可以隨時在開發人員模式下試用應用程式。
我知道大家一定很想瞭解更多細節,Kate 稍後就會上台,在幾分鐘內為大家詳細說明。
首先,我想談談越來越重要的使用者信任。
每當我們談到代理代表某人採取行動時,第一個問題通常是:「如何讓使用者保有控制權?」
以下用幾個簡單的概念來說明。
首先,確認機制會依風險程度調整。
我們不會在每次工具呼叫前顯示彈出式視窗。
無論是查詢資訊、查看菜單供應情況,還是追蹤訂單,都應該要流暢無阻。
不過,如果動作會產生實際後果,例如編輯共用內容、完成預訂,或刪除使用者無法輕易復原的內容,模型就會在執行前明確徵求使用者同意。
第二,機密資料會顯示,不會隱藏。
因此,我們的產品會檢查哪些個人資訊可能會與應用程式分享。
如果偵測到機密內容,我們會向使用者顯示分享的內容,讓使用者決定是否要繼續使用應用程式。
第三,我們在提出要求時會具體說明。
我們不會只模糊地詢問「你確定嗎?」,而是會明確指出是哪個應用程式,以及實際傳送或變更的內容。
這樣一來,確認訊息就能協助使用者真正做出決定,而不是隨意點選。
此外,由於使用者不希望在旅程中不斷收到確認提示,因此他們可以進一步控管系統詢問的頻率。
舉例來說,在 Gemini 應用程式中,使用者可以選擇是否一律允許特定應用程式執行特定動作。
對您來說,這代表您必須如實標示工具。
標示唯讀、變更和刪除資料的項目。
我們的產品會根據這些信號,決定何時將使用者帶入。
Kate 稍後會示範具體做法。
好的,讓我們回到剛才提到的週末行程規劃。
還記得當時有多困難、多零碎嗎?
你為一群朋友制定了很棒的計畫,但後來遇到瓶頸,必須複製貼上內容,在應用程式之間切換。
Viator 和 Ticketmaster 是我們最早的兩家優秀合作夥伴,他們發現了在使用者所在位置提供服務的商機。
他們決定與我們合作,打破這道牆,讓這些高意願使用者直接從 Gemini 進入應用程式。
這些合作夥伴建構的連結應用程式,讓整個旅程更加順暢無阻。
現在就來看看吧。
使用者連結應用程式,並要求 Gemini 在 Viator 尋找 4 人日間美食之旅,以及在 Ticketmaster 尋找 4 張演唱會門票。
Gemini 辨識出這項功能後,會直接呼叫 Viator 和 Ticketmaster 工具,並填入正確的人數、日期和偏好設定。
這兩個應用程式會擷取即時空房資訊,並在即時通訊中為使用者提供豐富的互動式體驗,使用者不必離開對話。
Viator 和 Ticketmaster 等合作夥伴,讓使用者不必在多個分頁間切換,就能直接完成所需操作,例如探索美食行程、挑選演唱會座位,從探索到採取行動一氣呵成。
因此,靜態應用程式啟動器的時代即將結束,取而代之的是智慧、主動且具備代理功能的體驗。
使用者已開始透過 Google 搜尋和 Gemini 尋求協助。
我們攜手合作,就能協助他們超越答案,提供真正強大且神奇的體驗。
以上就是我的分享。
現在,我將交棒給 Kate,由她帶領各位瞭解如何建構連結應用程式。
請上台。
大家好
我是開發人員關係工程師 Kate,負責協助開發人員整合連結的應用程式平台。
因此,我會逐步說明如何測試、建構及部署連結應用程式。
正如 Mai 先前提到的,與 Connected Apps Platform 整合的方法主要有兩種:一種是透過遠端 MCP 伺服器使用 MCP 通訊協定,另一種是透過 Android MCP,在裝置上使用 AppFunctions 程式庫建構遠端 MCP 伺服器。
如要整合 Android、iOS 和網頁等平台,建議使用遠端 MCP 伺服器。
另外,有些開發人員也反應,有時應用程式資料只在裝置上可用,因此偏好在本機執行。
針對這類用途,建議使用 AppFunctions Jetpack 程式庫,透過 Android MCP 執行。
此外,也歡迎觀看 Dan 和 Sarah 的專題演講,深入瞭解如何透過 AppFunctions 和 Android MCP 整合 Connected Apps Platform。
接著來瞭解如何建構遠端 MCP 伺服器。
為了示範實際運作情形,我們建構了官方 AndroidDevSummit 連結應用程式。
以下說明這項功能的操作方式。
我們切換回即時示範。
舉例來說,您可以詢問「AndroidDevSummit,請提供更多 XR 研討會的資訊」。
Gemini 會連結到我們為這個連結應用程式建構的 MCP 伺服器。
它會找出要呼叫的合適工具,並使用該工具的資料,建構容易理解的回覆。
因此,它會在這裡找到第 1 天和第 2 天與 XR 相關的工作階段資訊,最後使用 Android 機器人轉譯 AndroidDevSummit 的自訂品牌小工具。
因此,你可以直接在 Gemini 中與這個小工具互動。
你可以查看時間表,例如切換地點,或依日期篩選。
你也可以依不同主題篩選,例如搜尋 XR 相關課程,以及查看詳細資料和講者。
太棒了!
Gemini 內建所有功能,提供自訂品牌體驗,使用者不必切換,也不必在其他應用程式中尋找其他資訊,所有功能都在同一個地方,不必互動,也不必切換或離開應用程式本身。
現在切換回投影片。
接著,我們來看看如何建構這類連結應用程式。
因此,使用 FastMCP 程式庫啟動 MCP 伺服器非常簡單,但請務必遵循四項重要最佳做法。
首先,您需要提供明確的伺服器指令。
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="ADS-MCP",
instructions=(
"A Model Context Protocol server providing event "
"overview, schedules, sessions, speakers, and "
"sandbox demos for the Android Developer Summit "
),
)初始化 MCP 伺服器時,請務必定義明確的操作說明,描述連結的應用程式網域和功能。
連結的應用程式平台會根據這些指示,判斷何時要將工作委派給您的伺服器。
此外,稍後會介紹的 Google Connected Console,也會明確驗證這些指令是否存在。
第二,新增工具註解,確保安全性和控管。
@mcp.tool(
title="List Sessions",
annotations=ToolAnnotations(
readOnlyHint=True,
destructiveHint=False,
),
meta={ … },
)
def list_sessions( … )
…對於 ADS 伺服器,我們有這兩個註解。
模型必須知道工具何時為唯讀,或何時會修改資料。
因此,如果您有任何工具可以編輯或刪除使用者資訊,請一律使用這個 destructiveHint 將其標示為可編輯或刪除作業。
這樣一來,連結的應用程式平台就會知道,需要向使用者顯示確認訊息,確認他們同意完成這項動作。
您也可以在 Connected Google Connected Console 中設定工具,我稍後會說明。
第三,強型別結構定義和語意 docstring。
def list_sessions(
track: Optional[str] = None,
location: Optional[str] = None,
) -> List[Dict[str, Any]]:
"""Lists all sessions, optionally filtered by track
(e.g. 'Tools and performance', 'Apps Foundation',
'AI experiences', 'Android XR') or location
(e.g. 'MTV', 'Mountain View', 'London', 'LON').
"""
…將參數文件字串視為提示的一部分。
在這個 list_sessions 工具中,我們明確記錄了預期值,例如工具和效能,或 MTV 與倫敦的位置。
要準確呼叫工具,最關鍵的因素是結構定義必須清楚且具描述性。
最後一個是 UI 資源中繼資料繫結。
@mcp.tool(
…
meta={
"ui": {
"resourceUri": "ui://ads-mcp/summit-app",
},
…
},
)
def list_sessions(…)
…查看中繼資料中的 UI 定義。
這項中繼資料是橋梁,可指示 Gemini 將工具輸出內容直接繫結至這裡的自訂 UI 資源。
接下來要說明如何轉譯 UI。
@mcp.resource(
"ui://ads-mcp/summit-app",
name="summit-app",
mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
"""Renders the interactive ADS 2026 dashboard."""
return ResourceResult([
ResourceContent(
_build_summit_ui_html(),
mime_type="text/html",
)
])連結的應用程式平台可讓您透過 MCP 應用程式 UI,從 MCP 伺服器轉譯豐富的使用者介面。
如果想充分發揮彈性,打造能展現品牌特色的自訂介面 (例如 Android 開發人員高峰會),則可公開 MCP UI 資源。
Gemini 則可在安全的沙箱 iframe 中算繪。
接著,我會逐步說明如何直接從本機電腦測試及部署連結的應用程式,並直接部署至正式環境。
是啊
接著來看看如何在本機開發及測試。
開發期間,您可以使用第一個指令,在本機輕鬆啟動伺服器。
./venv/bin/python server.py
npx @modelcontextprotocol/inspector接著,您可以使用 MCP Inspector 對伺服器進行偵錯、查看可用工具,以及與 UI 互動。
這是 MCP Inspector 在 Android 開發人員高峰會的範例。
因此,您可以查看工具、查看 UI,並在本機測試。
第二,您需要將 MCP 伺服器部署至遠端端點,才能在 Gemini 開發人員模式中存取及驗證。
您可以在任何基礎架構或雲端服務供應商託管 MCP 端點。
不過,如果您偏好 Google Cloud,可以輕鬆搭配 Google Cloud CLI 使用。
只要使用這個簡單的指令進行部署,即可從遠端存取應用程式。
gcloud run deploy ads-mcp-server下一步是在 Gemini 開發人員模式中驗證公開端點。
現在,讓我們切換回即時示範,我會示範如何實際使用開發模式。
只要前往「設定」並點選「開發人員模式」,就能輕鬆找到開發人員模式。
接著,您需要選擇要測試的連結應用程式。
舉例來說,只要在這裡提供 MCP 伺服器網址,就能建立新的伺服器。
我已建立一個名為 ADS MCP 的測試端點。
我想測試 Gemini 的端對端運作方式。
我們來問個問題。
「ADS MCP,請提供更多活動資訊。」
因此,Gemini 現在會呼叫 MCP 伺服器,您也可以在開發人員模式中查看正在呼叫的工具。
舉例來說,如果提示是「告訴我更多關於活動的資訊」,系統就會呼叫 get_summit_info。
您也可以看到成功的回應。
您會看到延遲時間
您也可以查看所有要求和回應詳細資料。
舉例來說,我們的回應包含許多資訊。
您也可以稍微放大,看看如何偵錯、需要哪些資訊,並確認所有內容都正確無誤。
您也可以複製連結,方便與團隊成員分享。
您也可以匯出整個事件記錄,並視需要分享。
我也很喜歡可以探索其他可用工具的功能,在開發人員模式中,您可以看到取得高峰會資訊、列出工作階段和其他工具。
您也可以變更環境,模擬不同的使用者情境。
舉例來說,您可以變更日期時間或語言等偏好設定,也可以設定驗證。
以上就是開發模式。
您現在就能開始建構 MCP 伺服器,並透過開發人員模式進行測試。
現在所有人都能使用。
現在切換回投影片。
好的。
假設您已使用開發人員模式進行測試,一切看起來都很順利,接下來該怎麼做?
如要使用我們的平台,請先填寫這份意願調查表,申請存取權。
您也可以在說明文件和 Google Connected Console 中找到這項資訊。
申請獲准後,您就能存取 Google Connected Console,準備推出正式版應用程式。
只要在控制台中完成幾個步驟,就能準備好應用程式。
首先,您需要建立新的連結應用程式,並提供名稱。
接著,只要選取功能和類別即可。
舉例來說,我們在這個範例中選取了「效率提升」,然後按一下「建立」。
接著,在應用程式詳細資料下方,您需要提供公開資料,例如顯示名稱、圖示,以及面向使用者的說明、應用程式功能、限制、提示範例和其他資料。
設定 MCP 伺服器時,您需要提供端點。
您必須驗證這個網域屬於您,也可以設定同步工具的憑證。
請注意,Google 控制台會擷取 MCP 結構定義的快照,因此每當您變更結構定義時,都必須返回並重新部署。
接著,您就可以設定應用程式供應情形。
您可以選擇應用程式適用的區域、語言、平台和其他個別工具設定。
接著,只要按下「推送變更」,並提交給 Gemini 階段審查即可。
接著,您也可以在「管理測試人員」下方新增測試帳戶。
並立即在網頁、行動裝置或先前選取的任何介面 (例如 Gemini 或 Google 搜尋) 上,使用這個測試帳戶進行即時測試,然後提交最終預覽。
應用程式準備就緒後,只要按下提交按鈕,就能在全球或指定區域推出正式版。
就是這麼簡單!
無論是透過遠端 MCP 伺服器或 Android MCP 公開應用程式功能,我們都很期待看到您使用連結的應用程式平台建構的成果。
我們很樂意協助您打造這項出色的整合功能。
只要按照這份文件和範例操作,即可使用這個條碼。
非常感謝各位的參與!
祝您編寫程式一切順利!
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="ADS-MCP",
instructions=(
"A Model Context Protocol server providing event "
"overview, schedules, sessions, speakers, and "
"sandbox demos for the Android Developer Summit "
),
)@mcp.tool(
title="List Sessions",
annotations=ToolAnnotations(
readOnlyHint=True,
destructiveHint=False,
),
meta={ … },
)
def list_sessions( … )
…def list_sessions(
track: Optional[str] = None,
location: Optional[str] = None,
) -> List[Dict[str, Any]]:
"""Lists all sessions, optionally filtered by track
(e.g. 'Tools and performance', 'Apps Foundation',
'AI experiences', 'Android XR') or location
(e.g. 'MTV', 'Mountain View', 'London', 'LON').
"""
…@mcp.tool(
…
meta={
"ui": {
"resourceUri": "ui://ads-mcp/summit-app",
},
…
},
)
def list_sessions(…)
…@mcp.resource(
"ui://ads-mcp/summit-app",
name="summit-app",
mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
"""Renders the interactive ADS 2026 dashboard."""
return ResourceResult([
ResourceContent(
_build_summit_ui_html(),
mime_type="text/html",
)
])./venv/bin/python server.py
npx @modelcontextprotocol/inspectorgcloud run deploy ads-mcp-server