發表者簡介: 周蔚(arthaszhou), 騰訊專家工程師,即通產品部,平臺開發組組長
“輕應用”展示:“輕應用”暫沒有正式的名稱。團隊內部基於習慣把這種內嵌在QQ中的應用稱為“輕應用”,蘊含應用輕小,使用輕便之意。有時候我們也把“輕應用”稱為“輕App”或“Ark應用”。和QQ中承載的大量全屏體驗的Web應用不同,“輕應用”更多是以碎片化的方式內嵌在QQ中。
支撐“輕應用”的Ark(開發代號)是我們自研的框架。基於使用指令碼語言開發帶來的優勢,“輕應用”可以像Web應用一樣動態更新,無需隨QQ版本釋出。且具備多平臺(iOS、Android、Windows)體驗一致性,一次開發,多平臺執行(Write Once, Run Anywhere)。
“輕應用”的技術特點:動態更新動態更新是“輕應用”最基本的技術能力。“輕應用”既可基於app包的形式整體更新,也可基於檢視區域性更新。雖然以Web技術為代表的方案也可以使應用獲得動態運營能力,但主要應用在全屏場景下,而“輕應用”將這一能力拓展到了訊息流等新的嵌入式場景。
QQ運動基於“輕應用”提供的動態運營能力無需釋出新版本QQ即可切換模版風格
輕量對比其他技術方案(Web、React Native等),“輕應用”在載入速度和記憶體佔用方面有明顯優勢。所以“輕應用”可以在不影響基礎體驗的情況下內嵌在訊息流中使用,同時開啟數十個甚至上百個檢視例項。
QQ運動開啟前後記憶體變化(iPhone 4)
為了達成上述輕量化的目標,我們在技術方案選型和實現上都向“輕”的方向有所傾斜。首先我們選擇了Lua作為第一個支援的開發語言。Lua的 VM非常小,充分保證了初始化時間和記憶體開銷的可控。而其基於暫存器的VM實現也使得指令碼程式在效能方面表現優異。另外在UI部分,Ark中沒有提供控制元件庫,只是提供構建UI的原子能力。開發者可以在上層透過模板裝配出可複用的UI(控制元件)。這使Ark核心的UI部分非常簡約。而在工程實現部分,我們在開發Ark時儘可能的複用了各個作業系統提供的差異化的源生能力。雖然這導致了框架的工程實現部分會更繁瑣(如增加一些中間層的設計,同樣的基礎模組實現多份等),但在體積控制上具備明顯的優勢。
可互動訊息流中的圖文訊息主要用於呈現靜態的文字和圖片內容。整合Ark後,訊息內容具備了更豐富的互動能力。從而使訊息流從服務入口的容器升級為了服務本身的容器,嵌入在訊息裡中的服務可以更短路徑被使用者使用。
基於“輕應用”實現的時鐘/計算器/小遊戲,可直接在訊息流中完成互動
為了實現上述能力升級,Ark提供了豐富的基礎能力API供開發者使用。同時也將部分QQ的平臺能力進行了封裝,使“輕應用”可以更好的融入QQ中。
介面文字、影象、畫布、輸入框、佈局器、控制器、模板網路Http、WebSocket、SSO多媒體音訊播放、影片播放、動圖(GIF、APNG)裝置羅盤、加速度、位置QQ登入(OpenID)、獲取使用者資訊、分享、開啟網頁&應用、掃碼
隨著應用開發能力的逐步完善,部分團隊已經開始嘗試基於Ark開發更復雜的全屏“輕應用”。
全屏方式開啟的騰訊地圖“輕應用”
我們當前選擇的產品方向是根據使用者行為(狹義來說就是對話語義)和使用者屬性識別場景,匹配場景化的服務嵌入訊息流使用。作出這種選擇主要基於兩方面因素:首先是對使用者的價值。訊息流是人與人溝通的核心載體。如果服務能自然的融合到訊息流中,所有以溝通為起點的服務都能最短路徑獲取和使用。其次是技術實現上的考慮。訊息流中的對話內容很多時候也正是當前使用者所處場景相關的語言表達,有助於平臺識別使用者所處場景。
QQ中現有的場景化應用主要透過兩種被動方式觸發:
識別使用者輸入內容觸發應用入口,點選後在鍵盤區展示。識別聊天內容在訊息流中插入應用入口,點選後在訊息流中展示。地圖
音樂、自選股、動漫、天氣
基於被動方式場景作為切入點有兩個原因:一是客觀上現有的語義分析技術能力不足(出於對使用者隱私的尊重無法使用更成熟的伺服器方案,手機裝置的資源有限使技術選擇有較大侷限性),被動方式觸發對召回率的要求沒有主動搜尋那麼高。二是主觀上策略選擇,基於訊息流內容的被動觸發可以為服務提供方帶來增量的流量。為了獲得被動觸發的機會,需要“輕應用”主動的標註所具備的能力。而主動標註再結合模式識別、自然語言理解等技術手段,使用者行為、使用者畫像、服務三者均轉化為可計算的資料。基於計算使使用者行為動態關聯到個性化的服務,這正是我們建設場景化“輕應用”平臺的基礎。
注:導流量是把雙刃劍,過度的導流必然會傷害使用者體驗。所以這需要平臺團隊有更強的剋制力。被動場景的“輕應用”接入需要儘量規避帶有推薦廣告性質的服務,更多侷限在和場景有直接關聯偏工具屬性的服務上。
除了使用者行為被動觸發“輕應用”所需的應用能力標註以外,我們也期望所有“輕應用”的輸出都能是統一的標準化語義化的元資料。結合知識圖譜,所有的“輕應用”能聚合成一個有機的整體,使使用者從任意場景切入使用“輕應用”,都能伴隨著使用“輕應用”的行為自然的切換到下一個場景繼續使用其他“輕應用”。
場景化應用並不侷限於單個使用者到服務的單向連線,基於IM平臺自身的分享能力,可以實現多人和服務的連線關係。群投票、聚餐時點菜、AA買單、KTV點歌等等都是生活中經常發生的多人共同使用服務場景。而基於訊息流內嵌“輕應用”來實現,溝通、服務互動、資訊反饋都直接在訊息流中完成,使用服務的整體體驗更流暢更直觀。
基於“輕應用”實現的遊戲組隊,訊息流中可實時更新組隊狀態和組隊人數
“輕應用”的未來:數年前,使用網際網路還是侷限在特定地點(家、公司、網咖)使用特定裝置(PC)上網。在移動網際網路時代智慧手機的普及打破了時空的桎梏,使人們可以隨時隨地的使用網際網路,淡化了“上網”概念。未來隨著物聯網等基礎設施的完善,穿戴式裝置(AR眼鏡)、汽車、家用電器(電視、冰箱)、家居裝置等都會成為接入網際網路的節點。現實世界和虛擬網路世界之間的邊界會逐漸模糊。而場景化應用正是促進現實生活和網際網路服務融合的重要橋樑。
基於以上判斷,“輕應用”未來發展的大方向也可以基本確定。首先在表現層面,我們期望基於“輕應用”能構建標準化的容器,可在手機之外的其他裝置中展示,幫助服務以碎片化的方式更方便的嵌入到各種場景中使用。其次是資料層面,我們期望能把“輕應用”標準化語義化的元資料標註拓展到裝置層面,使裝置能力融合到“輕應用”的服務網路中,構成完整的服務閉環提供給使用者使用。
除此之外,和AI技術的結合同樣也是“輕應用”未來需要努力的方向。AI可以充當現實世界和網際網路服務之間的翻譯,提升使用者使用服務的效率。同時AI也可以承擔資料過濾器的角色,解決資訊過載問題。對場景化“輕應用”平臺來說,AI技術的價值具體可以體現在以下幾個方面:
挖掘更多資料生成精確的場景描述,給使用者更個性化的服務介面。改善人機互動方式,使使用者可以更高效的使用服務。輔助使用者在使用服務時更高效的做決策。“連線一切”是公司未來發展的大戰略。“輕應用”的發展方向和這個大戰略也是一致的。我們期望 “輕應用”在未來能更好的扮演聯結器的角色,連線使用者和服務。能讓使用者擁有更加便捷高效的生活。
出處:https://cloud.tencent.com/developer/article/1005956