相關(guān)申請的交叉引用
本申請要求2015年11月6日提交的美國申請no.14/935,301、2015年11月6日提交的美國申請no.14/935,308、2014年12月24日提交的美國臨時申請no.62/096,833、以及2014年11月13日提交的美國臨時申請no.62/079,512的優(yōu)先權(quán),上述申請的全部公開內(nèi)容通過引用并入本文中。
本公開一般地涉及移動應(yīng)用的領(lǐng)域,具體地涉及移動應(yīng)用的上下文深層鏈接。
背景技術(shù):
對客戶端設(shè)備上的應(yīng)用生態(tài)系統(tǒng)(例如,與智能電話上的“應(yīng)用商店”相關(guān)聯(lián)的生態(tài)系統(tǒng))的開發(fā)已經(jīng)產(chǎn)生了這樣的系統(tǒng),其中,用戶可以容易地安裝新的應(yīng)用并且立即向他們的客戶端設(shè)備添加新功能。這是因?yàn)?,由生態(tài)系統(tǒng)提供的應(yīng)用是半標(biāo)準(zhǔn)化的以提供統(tǒng)一的安裝進(jìn)程,并且可以使用由生態(tài)系統(tǒng)提供的標(biāo)準(zhǔn)化庫函數(shù)。然而,隨著由這些生態(tài)系統(tǒng)提供的應(yīng)用的數(shù)量增加,用戶的客戶端設(shè)備上的環(huán)境變得不那么粘著,這是因?yàn)榕c互聯(lián)網(wǎng)上的超鏈接不同,客戶端設(shè)備上的每個應(yīng)用都無法通過應(yīng)用安裝進(jìn)程容易地鏈接到客戶端設(shè)備上的另一個應(yīng)用的一部分。此外,用戶也不能將其他用戶引導(dǎo)到這些應(yīng)用的特定部分,尤其是在其他用戶在他或她的客戶端設(shè)備上沒有安裝該應(yīng)用的情況下。這產(chǎn)生了用戶被迫半隔離地操作每個應(yīng)用程序的情況。因此,缺少這樣一種方法,其能夠容易地將用戶引導(dǎo)到應(yīng)用內(nèi)的部分并且將數(shù)據(jù)傳遞給應(yīng)用,而不論用戶的客戶端設(shè)備的類型如何以及客戶端上是否安裝了應(yīng)用。
附圖說明
根據(jù)具體實(shí)施方式、所附的權(quán)利要求以及附圖,所公開的實(shí)施例的優(yōu)點(diǎn)和特征將變得更加顯而易見。下面是對附圖的簡要介紹。
圖1示出了能夠進(jìn)行上下文深層鏈接的示例性系統(tǒng)。
圖2示出了根據(jù)一個實(shí)施例的客戶端鏈接模塊。
圖3示出了根據(jù)一個實(shí)施例的服務(wù)器鏈接模塊。
圖4是示出了根據(jù)一個實(shí)施方式的、用于生成上下文深層鏈接的示例性方法的流程圖。
圖5是示出了根據(jù)一個實(shí)施例的、用于利用基于上下文的響應(yīng)來對與深層上下文鏈接相關(guān)聯(lián)的請求做出響應(yīng)的示例性方法的流程圖。
圖6是示出了根據(jù)一個實(shí)施例的、用于請求和發(fā)送鏈接數(shù)據(jù)的示例性交互的交互圖。
圖7是示出了能夠從機(jī)器可讀介質(zhì)讀取指令并且在處理器(或控制器)中執(zhí)行指令的示例性機(jī)器中的各部件的框圖。
具體實(shí)施方式
附圖和以下描述涉及僅作為示例的優(yōu)選實(shí)施例。應(yīng)該理解,根據(jù)下文論述,本文公開的結(jié)構(gòu)和方法的替選實(shí)施例將被容易地認(rèn)識為可以在不偏離所要求保護(hù)的權(quán)利要求的原理的前提下被采用的可行替代方案。
現(xiàn)在將詳細(xì)參照若干實(shí)施例,這些實(shí)施例的示例在附圖中示出。應(yīng)該理解,附圖中可以使用相似或相同的附圖標(biāo)記,并且可以指示相似或相同的功能。附圖僅出于說明的目的來描繪所公開的系統(tǒng)(或方法)的實(shí)施例。根據(jù)以下描述,本領(lǐng)域技術(shù)人員將容易地認(rèn)識到可以在不偏離本文公開的原理的前提下采用本文說明的結(jié)構(gòu)和方法的替選實(shí)施例。
配置概述
作為示例實(shí)施例,公開了用于創(chuàng)建和使用上下文深層鏈接的系統(tǒng)。在一個實(shí)施例中,上下文深層鏈接服務(wù)器從客戶端設(shè)備接收與有效上下文深層鏈接相關(guān)聯(lián)的請求。上下文深層鏈接與指示應(yīng)用的特定配置的鏈接數(shù)據(jù)相關(guān)聯(lián)。
響應(yīng)于確定客戶端設(shè)備已經(jīng)存儲先前生成的指紋的指示符,服務(wù)器取回(retrieve)由本地存儲的指紋標(biāo)識的客戶端設(shè)備的存儲的上下文信息,所述本地存儲的指紋與由存儲在客戶端設(shè)備上的指示符確定的先前生成的指紋相匹配。這樣的上下文信息被存儲在上下文深層鏈接服務(wù)器上?;蛘?,響應(yīng)于確定客戶端設(shè)備沒有先前生成的指紋的指示符,上下文深層鏈接服務(wù)器基于客戶端設(shè)備的特性生成客戶端設(shè)備的唯一指紋,并且基于客戶端設(shè)備的特性確定請求的上下文信息。這些特性可以包括ip地址、操作系統(tǒng)版本、硬件標(biāo)識符、操作系統(tǒng)提供的標(biāo)識符、以及在結(jié)合時可以生成客戶端的唯一指紋的其他特性。
上下文深層鏈接服務(wù)器隨后向客戶端設(shè)備發(fā)送基于客戶端設(shè)備的上下文信息而選擇的響應(yīng),以使得該響應(yīng)在客戶端設(shè)備上是可操作的。例如,如果上下文信息指示客戶端設(shè)備支持應(yīng)用生態(tài)系統(tǒng),則響應(yīng)可以使得客戶端設(shè)備打開在上下文深層鏈接的鏈接數(shù)據(jù)中指定的應(yīng)用?;蛘?,如果客戶端設(shè)備不支持應(yīng)用生態(tài)系統(tǒng),則響應(yīng)可以使得客戶端設(shè)備在網(wǎng)頁瀏覽器上打開具有關(guān)于應(yīng)用的更多信息的著陸頁面。作為另一個示例,如果沒有安裝應(yīng)用,則響應(yīng)可以使得客戶端設(shè)備打開與應(yīng)用商店對接的應(yīng)用,在應(yīng)用商店中用戶可以下載和安裝應(yīng)用。
示例性上下文深層鏈接系統(tǒng)
圖1示出了能夠進(jìn)行上下文深層鏈接的示例性系統(tǒng)100。系統(tǒng)100包括一個或多個客戶端設(shè)備120、應(yīng)用商店140、應(yīng)用服務(wù)器130以及上下文深層鏈接服務(wù)器110。盡管示出的系統(tǒng)110包括圖1中示出的元件,然而在其他實(shí)施例中,系統(tǒng)100可以包括不同的元件。此外,在其他實(shí)施例中,每個元件的功能可以不同地分布在多個元件之中。
網(wǎng)絡(luò)150(其可以是有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)或其組合)使得能夠在客戶端設(shè)備120、應(yīng)用商店140、應(yīng)用服務(wù)器130以及上下文深層鏈接服務(wù)器110之間進(jìn)行通信,并且可以包括互聯(lián)網(wǎng)、lan、vlan(例如,利用vpn)、wan或其他網(wǎng)絡(luò)。在一個實(shí)施例中,網(wǎng)絡(luò)150使用標(biāo)準(zhǔn)通信技術(shù)和/或協(xié)議,例如超文本傳輸協(xié)議(http)、傳輸控制協(xié)議/網(wǎng)絡(luò)協(xié)議(tcp/ip)、統(tǒng)一資源定位符(url)和域名系統(tǒng)(dns)。在另一實(shí)施例中,作為代替或除了上文描述的技術(shù)之外,實(shí)體還可以使用定制的和/或?qū)S玫臄?shù)據(jù)通信技術(shù)。
應(yīng)用商店140是應(yīng)用生態(tài)系統(tǒng)(例如,移動應(yīng)用生態(tài)系統(tǒng))中的部件,其提供了客戶端設(shè)備的集中式位置以提交對要在客戶端設(shè)備120上安裝的應(yīng)用的請求。應(yīng)用商店140提供可以被預(yù)裝在客戶端設(shè)備120上的對接應(yīng)用。應(yīng)用商店140還包括可用應(yīng)用的數(shù)據(jù)庫以及諸如安裝要求、應(yīng)用權(quán)限等的應(yīng)用元數(shù)據(jù)。應(yīng)用商店140從對接應(yīng)用接收安裝應(yīng)用的請求。響應(yīng)于請求,應(yīng)用商店140將用于安裝應(yīng)用的數(shù)據(jù)發(fā)送到客戶端設(shè)備120。
客戶端設(shè)備120是由用戶用來執(zhí)行功能的電子設(shè)備,所述功能例如是消費(fèi)數(shù)字內(nèi)容、執(zhí)行軟件應(yīng)用、瀏覽托管在網(wǎng)絡(luò)150上的網(wǎng)頁服務(wù)器上的網(wǎng)站、下載文件以及與應(yīng)用商店140、應(yīng)用服務(wù)器130和上下文深層鏈接服務(wù)器110交互。例如,客戶端設(shè)備120可以是專用的電子閱讀器、智能電話、可穿戴設(shè)備(例如,智能表或掛件)、或平板設(shè)備、膝上型設(shè)備、或與參照圖7描述的示例性機(jī)器(或計算系統(tǒng))類似配置的臺式計算機(jī)。
每個客戶端設(shè)備120包括一個或更多個應(yīng)用121,其在由客戶端設(shè)備120執(zhí)行時執(zhí)行由應(yīng)用開發(fā)者定義的各種功能。應(yīng)用121可以利用客戶端設(shè)備120的操作系統(tǒng)或硬件組件,并且可以使用客戶端設(shè)備120的一個或多個輸入/輸出部件來向用戶提供接口。應(yīng)用121的示例包括導(dǎo)航應(yīng)用、在線無線電應(yīng)用、電子(e)商務(wù)應(yīng)用、本地商戶審核應(yīng)用等。
在一個實(shí)施例中,一個或更多個應(yīng)用121支持上下文深層鏈接。上下文深層鏈接指示應(yīng)用121的特定配置。在一些情況下,這樣的配置僅是對應(yīng)用121中的位置(例如應(yīng)用121內(nèi)的部分)的引用。例如,眾包查看應(yīng)用中的特定位置可以是本地餐廳的查看頁面。這種到應(yīng)用121中的一個位置的鏈接本身還可以被稱為深層鏈接。在其他情況中,這樣的配置包括特定的設(shè)置、參數(shù)、變量以及應(yīng)用121的其他選項(xiàng)。例如,電子商務(wù)應(yīng)用的一組特定設(shè)置可以對特定用戶賬戶設(shè)置一定的推薦獎勵。
在一個實(shí)施例中,上下文深層鏈接可以是統(tǒng)一資源定位符(url)。此外,當(dāng)客戶端設(shè)備120發(fā)出與應(yīng)用121的上下文深層鏈接相關(guān)聯(lián)的請求時,客戶端設(shè)備120從上下文深層鏈接服務(wù)器110接收響應(yīng),該響應(yīng)基于客戶端設(shè)備120的上下文信息。上下文信息可以包括客戶端設(shè)備120的平臺(例如,移動平臺或桌面平臺)、在客戶端設(shè)備120上執(zhí)行的操作系統(tǒng)的類型和版本、客戶端設(shè)備120上是否已經(jīng)安裝了應(yīng)用121等。由于響應(yīng)是基于上下文的并且不固定,因此任何客戶端設(shè)備120都能夠?qū)憫?yīng)進(jìn)行操作。這允許跨所有客戶端設(shè)備平臺而使用上下文深層鏈接。
例如,上下文深層鏈接可以是http://link-provider.com/[應(yīng)用標(biāo)識符]/[唯一標(biāo)識符]格式的url。在該示例中,“l(fā)ink-provider.com”是與執(zhí)行協(xié)調(diào)上下文深層鏈接操作的實(shí)體相關(guān)聯(lián)的域名。這可以與專用的服務(wù)器相關(guān)聯(lián),例如下文描述的上下文深層鏈接服務(wù)器?!癧應(yīng)用標(biāo)識符]”是標(biāo)識所考慮的應(yīng)用的唯一字符串標(biāo)識符?!癧唯一標(biāo)識符]”是標(biāo)識特定鏈接的另一個唯一字符串標(biāo)識符。注意到,上下文深層鏈接的其他實(shí)施例可以在url(例如,url可以包括查詢字符串)中具有不同的標(biāo)識符組合。當(dāng)用戶點(diǎn)擊上下文深層鏈接(或與其交互)時,向“l(fā)ink-provider.com”服務(wù)器發(fā)出請求,該服務(wù)器接收唯一標(biāo)識符并且能夠向用戶的客戶端設(shè)備120發(fā)送上下文有效的響應(yīng)。例如,如果用戶正在使用支持移動應(yīng)用生態(tài)系統(tǒng)的移動設(shè)備,則服務(wù)器可以檢測到該上下文信息,并且在用戶沒有安裝鏈接中引用的應(yīng)用的情況下,利用到用戶的客戶端設(shè)備120上的應(yīng)用商店的重定向來進(jìn)行響應(yīng)。
為了支持上下文深層鏈接,在一個實(shí)施例中,應(yīng)用121包括客戶端鏈接模塊122,其從上下文鏈接服務(wù)器110請求上下文深層鏈接并且從上下文深層鏈接服務(wù)器110取回與上下文深層鏈接有關(guān)的鏈接數(shù)據(jù)。為了建立上下文深層鏈接以發(fā)送到第二客戶端設(shè)備120,第一客戶端設(shè)備120上的第一客戶端鏈接模塊122從上下文深層鏈接服務(wù)器110請求上下文深層鏈接。第一客戶端鏈接模塊122還向上下文深層鏈接服務(wù)器110發(fā)送鏈接數(shù)據(jù),其指示了應(yīng)用121的特定配置。第一客戶端鏈接模塊122隨后從上下文深層鏈接服務(wù)器110接收新生成的上下文深層鏈接。
當(dāng)?shù)诙蛻舳嗽O(shè)備120(例如,由于從用戶接收到與上下文深層鏈接的輕擊交互而)發(fā)送與上下文深層鏈接相關(guān)聯(lián)的請求時,第二客戶端設(shè)備120從上下文深層鏈接服務(wù)器110接收響應(yīng)。如果由上下文深層鏈接的鏈接數(shù)據(jù)指示的應(yīng)用121已經(jīng)安裝在第二客戶端設(shè)備120上,則響應(yīng)包括使得第二客戶端設(shè)備120打開或初始化第二客戶端設(shè)備120上的應(yīng)用121的鏈接。當(dāng)應(yīng)用121初始化時,第二客戶端設(shè)備120的應(yīng)用121上的第二客戶端鏈接模塊122向上下文深層鏈接服務(wù)器110發(fā)送對任何鏈接數(shù)據(jù)的請求。如果由上下文深層鏈接的鏈接數(shù)據(jù)指示的應(yīng)用121沒有安裝在第二客戶端設(shè)備120上,則響應(yīng)包括如下鏈接:該鏈接使得第二客戶端設(shè)備120打開或初始化與應(yīng)用商店140對接的應(yīng)用并且使得應(yīng)用商店應(yīng)用打開應(yīng)用121的著陸頁面。
在另一個實(shí)施例中,為了建立上下文深層鏈接,客戶端鏈接模塊122最初不從服務(wù)器請求上下文深層鏈接。相反,客戶端鏈接模塊122可以根據(jù)特定的格式獨(dú)立地生成上下文深層鏈接,該上下文深層鏈接也包括應(yīng)用被配置為與上下文深層鏈接相關(guān)聯(lián)的鏈接數(shù)據(jù)。在一個實(shí)施例中,該格式是“l(fā)ink-provider.com/key=[應(yīng)用標(biāo)識符]?[鏈接數(shù)據(jù)],”,其中,“應(yīng)用標(biāo)識符”表示如上文描述的應(yīng)用的標(biāo)識符,而“鏈接數(shù)據(jù)”表示具有鏈接數(shù)據(jù)的查詢字符串,針對該鏈接數(shù)據(jù)的應(yīng)用被配置為與獨(dú)立生成的上下文深層鏈接相關(guān)聯(lián)。
當(dāng)?shù)诙蛻舳嗽O(shè)備120發(fā)送與上下文鏈接相關(guān)聯(lián)的請求時,該請求被發(fā)到上下文深層鏈接服務(wù)器110。上下文深層鏈接服務(wù)器110標(biāo)識在獨(dú)立生成的上下文深層鏈接中指示的鏈接數(shù)據(jù)并且存儲該鏈接數(shù)據(jù)。上下文深層鏈接服務(wù)器110生成新的上下文深層鏈接,并且將新存儲的鏈接數(shù)據(jù)與新生成的上下文深層鏈接相關(guān)聯(lián)。上下文深層鏈接服務(wù)器110利用該新生成的上下文深層鏈接來響應(yīng)來自第二客戶端設(shè)備120的請求。第二客戶端設(shè)備120被定向到由新生成的上下文深層鏈接指示的位置,并且接收使得第二客戶端設(shè)備120執(zhí)行如上文針對非獨(dú)立生成的上下文深層鏈接描述的一個或更多個動作的響應(yīng)數(shù)據(jù)。
在一個實(shí)施例中,上文描述的響應(yīng)由上下文深層鏈接服務(wù)器110實(shí)時地執(zhí)行以使得在向上下文深層鏈接服務(wù)器110發(fā)出請求與由上下文深層鏈接服務(wù)器110做出響應(yīng)之間沒有延遲、或者延遲不超過閾值或用戶能感覺到的時間段。通過實(shí)時地或接近實(shí)時地做出響應(yīng),用戶不會容易地感覺到確定上下文或基于鏈接數(shù)據(jù)來配置應(yīng)用中的任何延遲,由此提供了無縫體驗(yàn)。
在一些實(shí)施例中,該客戶端鏈接模塊122由上下文深層鏈接系統(tǒng)的開發(fā)者作為插入到應(yīng)用121中的插件或庫提供給應(yīng)用121的開發(fā)者。
在一些實(shí)施例中,客戶端設(shè)備120包括能夠發(fā)送與上下文深層鏈接相關(guān)聯(lián)的請求的網(wǎng)頁瀏覽器123。在這樣的情況中,上下文深層鏈接具有超文本標(biāo)記語言(html)超鏈接的形式。網(wǎng)頁瀏覽器123顯示超鏈接的上下文深層鏈接,并且如果用戶點(diǎn)擊、輕擊超鏈接或與超鏈接交互,則網(wǎng)頁瀏覽器123向超鏈接所指示的上下文深層鏈接服務(wù)器110提交請求。網(wǎng)頁瀏覽器123隨后基于正執(zhí)行網(wǎng)頁瀏覽器123的客戶端設(shè)備的上下文而接收響應(yīng)。
響應(yīng)于來自應(yīng)用的請求,上下文深層鏈接服務(wù)器110生成上下文深層鏈接、向請求有效上下文深層鏈接的客戶端設(shè)備發(fā)送響應(yīng)、以及向應(yīng)用所有者提供與上下文深層鏈接有關(guān)的分析。如所示出的,上下文深層鏈接服務(wù)器110包括服務(wù)器鏈接模塊115、分析模塊116、以及分析存儲設(shè)備117。
服務(wù)器鏈接模塊115響應(yīng)于請求生成上下文深層鏈接并且發(fā)送對與有效上下文深層鏈接相關(guān)聯(lián)的請求的響應(yīng),該有效上下文深層鏈接是基于發(fā)出請求的客戶端設(shè)備的上下文來選擇的。
在一個實(shí)施例中,服務(wù)器鏈接模塊115從應(yīng)用121接收請求以生成上下文深層鏈接。當(dāng)服務(wù)器鏈接模塊115接收這樣的請求時,其生成新的上下文深層鏈接并且將該鏈接與關(guān)聯(lián)于請求的信息相關(guān)聯(lián)。服務(wù)器鏈接模塊115還可以與請求一起接收鏈接數(shù)據(jù)。如上文描述的,該鏈接數(shù)據(jù)描述關(guān)于應(yīng)用121已請求與生成的上下文深層鏈接相關(guān)聯(lián)的信息,并且可以指示應(yīng)用121的特定配置。服務(wù)器鏈接模塊115存儲該鏈接數(shù)據(jù)并且將其與生成的上下文深層鏈接相關(guān)聯(lián)。
服務(wù)器鏈接模塊115還響應(yīng)于與深層上下文鏈接相關(guān)聯(lián)的請求。當(dāng)服務(wù)器鏈接模塊115從客戶端設(shè)備120接收到與上下文深層鏈接相關(guān)聯(lián)的請求時,服務(wù)器鏈接模塊115確定客戶端設(shè)備120是否已經(jīng)(例如,在cookie中)存儲了唯一指紋的指示符。如果存在這樣的指紋指示符,則服務(wù)器鏈接模塊115基于指紋取回先前存儲的與客戶端設(shè)備120有關(guān)的上下文信息。如果不存在指紋,則服務(wù)器鏈接模塊115基于客戶端設(shè)備120的特性(例如,網(wǎng)絡(luò)地址、操作系統(tǒng)版本等)生成一個指紋。服務(wù)器鏈接模塊115還基于客戶端設(shè)備120的特性確定客戶端設(shè)備120的上下文信息?;谏舷挛男畔?,服務(wù)器鏈接模塊115將響應(yīng)發(fā)送回客戶端設(shè)備120,使得該響應(yīng)在客戶端設(shè)備120上可操作。
此外,服務(wù)器鏈接模塊115可以從客戶端設(shè)備120上的應(yīng)用121接收對鏈接數(shù)據(jù)的請求。服務(wù)器鏈接模塊115再次確定客戶端設(shè)備120的指紋,并且取回與上下文深層鏈接相關(guān)聯(lián)的任何鏈接數(shù)據(jù),該上下文深層鏈接具有來自有相同指紋的客戶端設(shè)備120的最近的相關(guān)聯(lián)的請求。服務(wù)器鏈接模塊115將該鏈接數(shù)據(jù)發(fā)送到客戶端設(shè)備120。
分析模塊116分析與上下文深層鏈接相關(guān)聯(lián)的請求以提供應(yīng)用所有者的分析信息。應(yīng)用所有者可以是應(yīng)用121的開發(fā)者或者是具有對應(yīng)用121的合法權(quán)利的實(shí)體。分析模塊116提供給所有者的分析信息的類型可以包括點(diǎn)擊了上下文深層鏈接的客戶端設(shè)備120、包括客戶端設(shè)備120的特性在內(nèi)的與客戶端設(shè)備120有關(guān)的已知信息、以及基于客戶端設(shè)備的用戶的上下文深層鏈接交互歷史而推斷出的客戶端設(shè)備的用戶的配置文件信息。
分析模塊116還可以向應(yīng)用121的所有者提供與用戶在由上下文深層鏈接引用的應(yīng)用121中執(zhí)行的一些動作有關(guān)的信息。這樣的動作的示例可以包括應(yīng)用中的用戶隨后訪問的部分、用戶隨后在應(yīng)用121中消費(fèi)的任何贊助內(nèi)容等。在一個實(shí)施例中,分析模塊116經(jīng)由網(wǎng)頁接口向所有者提供上文描述的信息。
在一個實(shí)施例中,上下文深層鏈接服務(wù)器110從應(yīng)用的所有者接收與每個上下文深層鏈接相關(guān)聯(lián)的標(biāo)簽信息。標(biāo)簽信息可以被包括在鏈接數(shù)據(jù)中或者是針對上下文深層鏈接的單獨(dú)的標(biāo)簽數(shù)據(jù)。分析模塊116向所有者提供針對與其交互過且具有與其相關(guān)聯(lián)的標(biāo)簽信息的每個上下文深層鏈接的標(biāo)簽信息。標(biāo)簽的示例包括指示運(yùn)動的標(biāo)簽、指示推薦程序的標(biāo)簽、指示邀請的標(biāo)簽等。
分析存儲設(shè)備117存儲分析模塊116用來向所有者提供分析信息的數(shù)據(jù)。該數(shù)據(jù)可以包括上文描述的由分析模塊116使用的數(shù)據(jù)。在一個實(shí)施例中,分析存儲設(shè)備117中的數(shù)據(jù)是從服務(wù)器鏈接模塊115接收的。
應(yīng)用服務(wù)器130提供一個或多個應(yīng)用121所需的任何服務(wù)器側(cè)功能。盡管示出了單個的應(yīng)用服務(wù)器130,但在其他實(shí)施例中,可以使用一個以上的應(yīng)用服務(wù)器130來支持不同的應(yīng)用121。盡管應(yīng)用服務(wù)器130被示出為具有客戶端鏈接模塊122,但在其他實(shí)施例中,應(yīng)用服務(wù)器130還包括額外的部件,例如用于處理應(yīng)用121的服務(wù)器側(cè)功能的服務(wù)器側(cè)應(yīng)用模塊、網(wǎng)頁服務(wù)器、和/或用于存儲與應(yīng)用121有關(guān)的服務(wù)器側(cè)數(shù)據(jù)的數(shù)據(jù)庫。與應(yīng)用121的功能一樣,應(yīng)用服務(wù)器130的功能主要由應(yīng)用121本身的所有者確定。
在一個實(shí)施例中,應(yīng)用服務(wù)器130包括可以執(zhí)行與應(yīng)用121上的客戶端鏈接模塊122相同的功能的客戶端鏈接模塊122??蛻舳随溄幽K122可以用于從上下文深層鏈接服務(wù)器110請求上下文深層鏈接。應(yīng)用服務(wù)器130上的客戶端鏈接模塊122向連接到應(yīng)用服務(wù)器130的客戶端設(shè)備120提供該生成的上下文深層鏈接。例如,應(yīng)用服務(wù)器130可以包括網(wǎng)頁服務(wù)器,并且應(yīng)用服務(wù)器130可以接收來自客戶端設(shè)備120的網(wǎng)頁請求。作為響應(yīng),應(yīng)用服務(wù)器130上的客戶端鏈接模塊122可以請求上下文深層鏈接并且經(jīng)由網(wǎng)頁服務(wù)器將其展示給客戶端設(shè)備120的用戶。
基于發(fā)出與鏈接相關(guān)聯(lián)的請求的客戶端設(shè)備的上下文信息,上文描述的系統(tǒng)100提供了用于在計算機(jī)網(wǎng)絡(luò)中發(fā)送指示應(yīng)用生態(tài)系統(tǒng)中的應(yīng)用內(nèi)的特定配置的鏈接的改進(jìn)的方法。這樣的系統(tǒng)至少可以用于解決計算機(jī)網(wǎng)絡(luò)中的如何通過對服務(wù)器的單獨(dú)的請求來識別客戶端設(shè)備以將與上下文深層鏈接相關(guān)聯(lián)的鏈接數(shù)據(jù)發(fā)送給客戶端設(shè)備的問題。此外,這樣的系統(tǒng)至少可以用于解決計算機(jī)網(wǎng)絡(luò)中的如何提供對應(yīng)用的更深層的訪問以便于提供對應(yīng)用中的位置的訪問或提供對應(yīng)用配置的訪問的問題。應(yīng)用可以請求指示應(yīng)用內(nèi)的特定配置的上下文深層鏈接,并且上下文深層鏈接服務(wù)器利用新生成的上下文深層鏈接來做出響應(yīng)。當(dāng)客戶端設(shè)備的用戶與上下文深層鏈接交互時,上下文深層鏈接服務(wù)器通過確定客戶端設(shè)備的特性來確定客戶端設(shè)備的上下文,并且基于上下文將合適的響應(yīng)發(fā)送給客戶端設(shè)備。上下文深層鏈接服務(wù)器還將上下文深層鏈接與客戶端設(shè)備的指紋相關(guān)聯(lián)。
響應(yīng)可以初始化用戶的客戶端設(shè)備上的應(yīng)用,該應(yīng)用向上下文深層鏈接服務(wù)器提交對與任何最近使用的上下文深層鏈接相關(guān)聯(lián)的鏈接數(shù)據(jù)的請求。上下文深層鏈接服務(wù)器將由應(yīng)用提供的指紋與關(guān)聯(lián)于上下文深層鏈接的指紋相匹配,并且向應(yīng)用發(fā)送相關(guān)聯(lián)的鏈接數(shù)據(jù),該鏈接數(shù)據(jù)隨后可以用于配置該應(yīng)用,由此允許數(shù)據(jù)跨應(yīng)用且跨設(shè)備地被傳送。
應(yīng)用的示例性客戶端鏈接模塊
圖2示出了根據(jù)一個實(shí)施例的圖1中的客戶端鏈接模塊122。如所示出的,客戶端鏈接模塊122包括鏈接請求模塊210、指紋生成模塊220、設(shè)備信息模塊230、鏈接數(shù)據(jù)取回模塊240、應(yīng)用配置模塊250、以及深層鏈接數(shù)據(jù)庫260。盡管示出的客戶端鏈接模塊122包括圖2所示的元件,但在其他實(shí)施例中,客戶端鏈接模塊122可以包括不同的元件。此外,在其他實(shí)施例中,每個元件的功能可以不同地分布在各元件之間。
深層鏈接數(shù)據(jù)庫260存儲應(yīng)用121內(nèi)的位置的指示符和/或在上下文深層鏈接的鏈接數(shù)據(jù)中指示的其他配置信息。位置是頁、部分、內(nèi)容項(xiàng)、以及用戶可以導(dǎo)航到的應(yīng)用中的任何其他元素。例如,在互聯(lián)網(wǎng)無線電應(yīng)用中,位置可以包括應(yīng)用內(nèi)的特定無線電臺的著陸頁面。在一個實(shí)施例中,深層鏈接數(shù)據(jù)庫260將對這些位置的指示存儲在與應(yīng)用的導(dǎo)航結(jié)構(gòu)相匹配的分層樹中。由此,針對應(yīng)用中的每個位置,深層鏈接數(shù)據(jù)庫260可以包括該位置本身的指示符以及到表示可以從該位置直接到達(dá)的各種后續(xù)位置的指示符的分支。在一個實(shí)施例中,深層鏈接數(shù)據(jù)庫260包括位置的內(nèi)部指示符集合與用于上下文深層鏈接的位置的外部指示符之間的映射。
在一個實(shí)施例中,深層鏈接數(shù)據(jù)庫260還存儲與折扣率和折扣碼有關(guān)的信息、推薦信息、以及與可以經(jīng)由鏈接數(shù)據(jù)發(fā)送的數(shù)據(jù)有關(guān)的其他細(xì)節(jié)。例如,鏈接數(shù)據(jù)可以指示折扣碼,并且深層鏈接數(shù)據(jù)庫260存儲與該折扣碼有關(guān)的折扣率信息。當(dāng)具有該折扣碼的鏈接數(shù)據(jù)被客戶端鏈接模塊122接收時,客戶端鏈接模塊122從深層鏈接數(shù)據(jù)庫260取回由折扣碼指示的詳細(xì)折扣信息。
為了建立深層鏈接數(shù)據(jù)庫260,應(yīng)用121的開發(fā)者可以手動地將每個位置或其他數(shù)據(jù)輸入到深層鏈接數(shù)據(jù)庫260中。在一個實(shí)施例中,位置是由客戶端鏈接模塊122在用戶使用應(yīng)用121并且訪問應(yīng)用121內(nèi)的不同位置時自動地收集的。在另一個實(shí)施例中,客戶端鏈接模塊122爬行應(yīng)用121中的各種位置來填充深層鏈接數(shù)據(jù)庫260。
鏈接請求模塊210將對新的上下文深層鏈接的生成請求發(fā)送給上下文深層鏈接服務(wù)器110。在一些情況下,鏈接請求模塊210接收來自應(yīng)用121的、關(guān)于請求新的上下文深層鏈接的請求,從而將鏈接數(shù)據(jù)發(fā)送到另一個客戶端設(shè)備120。如上文描述的,鏈接數(shù)據(jù)指示應(yīng)用121的特定配置。在一個實(shí)施例中,鏈接數(shù)據(jù)中的配置信息指示應(yīng)用中的位置,并且該位置指示符可以由鏈接請求模塊210從深層鏈接數(shù)據(jù)庫260取回。在另一個實(shí)施例中,鏈接數(shù)據(jù)中的配置信息包括應(yīng)用的其他信息。例如,鏈接數(shù)據(jù)可以包括鏈接數(shù)據(jù)的期望接收方應(yīng)用可以用來自動地填寫推薦碼字段的推薦數(shù)據(jù)。
為了請求新的上下文深層鏈接,鏈接請求模塊210可以將對新的上下文深層鏈接的請求發(fā)送給上下文深層鏈接服務(wù)器110。該請求包括應(yīng)用121期望新生成的上下文深層鏈接的接收方訪問的鏈接數(shù)據(jù)。在請求之后,鏈接請求模塊210接收新生成的上下文深層鏈接,和/或可以從上下文深層鏈接服務(wù)器110接收狀態(tài)/錯誤消息。如上文所述,在一些實(shí)施例中,客戶端鏈接模塊122可以獨(dú)立地生成上下文深層鏈接。在這樣的情況下,鏈接請求模塊210不聯(lián)系上下文深層鏈接服務(wù)器110。
在一些實(shí)施例中,上下文深層鏈接是url形式的,具有與上下文深層鏈接服務(wù)器110相關(guān)聯(lián)的域名,并且具有查詢字符串,該查詢字符串是用于唯一地標(biāo)識上下文深層鏈接的隨機(jī)生成的唯一變量。在另一個實(shí)施例中,域名與應(yīng)用的所有者相關(guān)聯(lián),并且當(dāng)與上下文深層鏈接交互時,上下文深層鏈接產(chǎn)生到上下文深層鏈接服務(wù)器110的重定向。
指紋生成模塊220基于客戶端設(shè)備120的一個或多個特性生成客戶端設(shè)備120的唯一指紋??蛻舳嗽O(shè)備120的特性是可以用于唯一地標(biāo)識客戶端設(shè)備120的關(guān)于客戶端設(shè)備120的信息。關(guān)于客戶端設(shè)備的信息可以包括其網(wǎng)絡(luò)地址(例如,ip地址)、操作系統(tǒng)類型和版本、其他安裝應(yīng)用的列表、地理位置、設(shè)備型號信息、屏幕尺寸等。客戶端設(shè)備120的特性還可以包括客戶端設(shè)備120獨(dú)有的且由客戶端設(shè)備120的操作系統(tǒng)生成的跟蹤標(biāo)識符,以用于跟蹤客戶端設(shè)備120。為了生成指紋,指紋生成模塊220采用這些特性中的一個或更多個并且生成客戶端設(shè)備獨(dú)有的唯一值。在一個實(shí)施例中,指紋生成模塊220通過對表示特性的值使用諸如md5或sha-1等的散列算法來生成指紋。例如,指紋生成模塊220可以將包括上文所列舉的示例特性的字符串散列化成表示指紋的唯一的散列值。在其他示例中,指紋生成模塊220通過將表示特性的一個或多個值附加在一起來生成指紋。
在生成指紋時使用的特性的數(shù)量可以是確保所有可能的客戶端設(shè)備之間的高度唯一性或高百分比唯一性所需的最小特性數(shù)量。為了計算該最小數(shù)量,上下文深層鏈接服務(wù)器110可以增加特性的數(shù)量直到這些特性的不同排列在生成指紋時超出預(yù)定值或大于估計的現(xiàn)有的或達(dá)到特定值或量級的客戶端設(shè)備的數(shù)量。使用的特性數(shù)量還可以由管理員手動地設(shè)置。如果某些特性僅在客戶端設(shè)備120的特定平臺上可用、如果某些特性在頁面請求期間將不會由在客戶端設(shè)備120上執(zhí)行的網(wǎng)頁瀏覽器暴露給網(wǎng)頁服務(wù)器、或者如果某些特性可能有揭露不必要量的額外信息的風(fēng)險,則指紋生成模塊220可以將這些特性排除用于生成指紋。
設(shè)備信息模塊230收集可以被提交給上下文深層鏈接服務(wù)器110的客戶端設(shè)備120的設(shè)備信息。設(shè)備信息包括可以由上下文深層鏈接服務(wù)器110用來確定關(guān)于客戶端設(shè)備120的上下文信息的客戶端設(shè)備120的任何信息??蛻舳嗽O(shè)備120的設(shè)備信息可以包括上文描述的特性、安裝應(yīng)用的列表、或配置設(shè)置。由于設(shè)備信息模塊230是應(yīng)用121的一部分,因此,與經(jīng)由網(wǎng)頁瀏覽器暴露的信息或從客戶端設(shè)備120到上下文深層鏈接服務(wù)器110的網(wǎng)絡(luò)請求相比,其能夠收集關(guān)于客戶端設(shè)備120的更詳細(xì)的信息。
在一個實(shí)施例中,設(shè)備信息模塊230至少收集在客戶端設(shè)備120上安裝的應(yīng)用的列表,以使得客戶端設(shè)備120的上下文信息包括在客戶端設(shè)備120上能夠鏈接到的已知應(yīng)用的列表。
當(dāng)應(yīng)用121被初始化時,鏈接數(shù)據(jù)取回模塊240從上下文深層鏈接服務(wù)器110取回任何鏈接數(shù)據(jù)。當(dāng)應(yīng)用121開始執(zhí)行時,應(yīng)用121在客戶端設(shè)備120上被初始化。這可能意味著應(yīng)用沒有駐留在客戶端設(shè)備120的易失性存儲器中或者可以僅具有正在執(zhí)行的存根應(yīng)用或背景進(jìn)程。初始化還可以在應(yīng)用失去焦點(diǎn)后在客戶端設(shè)備上重新獲得焦點(diǎn)時發(fā)生,或者在應(yīng)用剛被安裝時發(fā)生。
在應(yīng)用121的初始化之后,鏈接數(shù)據(jù)取回模塊240向上下文深層鏈接數(shù)據(jù)庫110發(fā)送用于請求鏈接數(shù)據(jù)的請求(如果有)。連同該請求一起,鏈接數(shù)據(jù)取回模塊240還向上下文深層鏈接服務(wù)器110發(fā)送由指紋生成模塊生成的客戶端設(shè)備120的指紋并且還可以發(fā)送由設(shè)備信息模塊230收集的設(shè)備信息。鏈接數(shù)據(jù)取回模塊240隨后從上下文深層鏈接服務(wù)器110接收與指紋相關(guān)聯(lián)的任何鏈接數(shù)據(jù)。在一個實(shí)施例中,該鏈接數(shù)據(jù)被發(fā)送到應(yīng)用配置模塊250。
應(yīng)用配置模塊250接收鏈接數(shù)據(jù)并且基于鏈接數(shù)據(jù)中的信息來配置應(yīng)用。如上文所述,鏈接數(shù)據(jù)包括應(yīng)用的配置信息。特別地,在一個實(shí)施例中,鏈接數(shù)據(jù)包括一個或多個鍵值對。這些鍵值對可以被安排在參數(shù)表中。鍵值對的鍵描述特定應(yīng)用配置屬性,并且與該鍵相關(guān)聯(lián)的值描述如何配置該屬性。值可以是數(shù)值、計算機(jī)指令、文本、二進(jìn)制數(shù)據(jù)等形式。
在一些實(shí)施例中,當(dāng)鍵值對指示應(yīng)用中的位置時,應(yīng)用配置模塊250確定與該位置指示符相關(guān)聯(lián)的位置并且將應(yīng)用121配置為向客戶端設(shè)備120的用戶呈現(xiàn)該位置。應(yīng)用配置模塊250可以通過在深層鏈接數(shù)據(jù)庫260中查找位置指示符以找到映射位置或到應(yīng)用位置的導(dǎo)航路徑,來將位置呈現(xiàn)給用戶。
在一些實(shí)施例中,當(dāng)鏈接數(shù)據(jù)中的鍵值對的鍵指示應(yīng)用121的不同屬性時,應(yīng)用配置模塊250基于該值來配置屬性。配置屬性的特定方法是基于應(yīng)用的。例如,如果應(yīng)用是導(dǎo)航應(yīng)用,并且鏈接數(shù)據(jù)中的鍵值對的鍵指示導(dǎo)航目的地屬性,則應(yīng)用配置模塊250可以配置應(yīng)用以將導(dǎo)航目的地設(shè)置成鍵值對的值中的數(shù)據(jù)。
上下文深層鏈接服務(wù)器的示例性服務(wù)器鏈接模塊
圖3示出了根據(jù)一個實(shí)施例的圖1的服務(wù)器鏈接模塊115。如所示出的,服務(wù)器鏈接模塊115包括鏈接生成模塊310、指紋生成模塊320、指紋匹配模塊330、上下文響應(yīng)模塊340、上下文數(shù)據(jù)存儲設(shè)備350、鏈接數(shù)據(jù)存儲設(shè)備360、以及鏈接數(shù)據(jù)模塊370。盡管示出的服務(wù)器鏈接模塊115包括圖3中示出的元件,但在其他實(shí)施例中,服務(wù)器鏈接模塊115可以包括不同的元件。此外,在其他實(shí)施例中,每個元件的功能可以不同地分布在多個元件上。
指紋生成模塊320基于客戶端設(shè)備120的一個或多個特性生成客戶端設(shè)備120的唯一指紋。在一些情況下,服務(wù)器鏈接模塊115從不能獨(dú)立生成指紋或沒有將指紋發(fā)送給服務(wù)器鏈接模塊115的客戶端設(shè)備120接收與上下文深層鏈接相關(guān)聯(lián)的請求。在這樣的情況下,指紋生成模塊320基于客戶端設(shè)備120的特性生成客戶端設(shè)備120的唯一指紋。
在一個實(shí)施例中,上下文深層鏈接是url,并且上下文深層鏈接服務(wù)器110從客戶端設(shè)備120的網(wǎng)頁瀏覽器123接收與上下文深層鏈接相關(guān)聯(lián)的請求。在這樣的情況下,指紋生成模塊320基于客戶端設(shè)備120的由網(wǎng)頁瀏覽器123暴露的并且存在于請求中的特性來生成指紋。這些特性可以包括網(wǎng)絡(luò)地址(例如,ip地址)、操作系統(tǒng)版本、操作系統(tǒng)類型、設(shè)備型號信息、以及屏幕尺寸??梢允褂糜删W(wǎng)頁瀏覽器123提供的用戶代理字段來確定這些特性中的一些??梢酝ㄟ^在網(wǎng)頁瀏覽器123上執(zhí)行諸如javascript代碼等的指令來確定這些特性中的一些。
如上文針對客戶端鏈接模塊122上的指紋生成模塊220所描述的,由指紋生成模塊220生成的指紋可以是散列的或是其他唯一標(biāo)識格式。
在生成客戶端120的指紋之后,指紋生成模塊320將指紋本地存儲在一個或多個數(shù)據(jù)存儲設(shè)備中。指紋生成模塊320還將指紋的指示符存儲在客戶端設(shè)備120上。指示符可以是可以被唯一地生成的任何字符串或其他值。在一個實(shí)施例中,指紋生成模塊320將指示符存儲在客戶端設(shè)備120的網(wǎng)頁存儲器123上的cookie中。存儲在客戶端設(shè)備120上的指紋的指示符可以用于從本地數(shù)據(jù)存儲設(shè)備取回指示的指紋。
將指紋的指示符而不是指紋本身存儲在客戶端設(shè)備120上的一個益處是,一個客戶端設(shè)備120可以與多個指紋相關(guān)聯(lián)。這可能是由于指紋生成方法導(dǎo)致的。例如,指紋可能是基于時間戳或網(wǎng)絡(luò)地址生成的,并且因此同一個客戶端設(shè)備120的指紋可能變化。由此,在客戶端設(shè)備120上存儲指紋的指示符使得上下文深層鏈接服務(wù)器110能夠?qū)⒖蛻舳嗽O(shè)備120與多個指紋相關(guān)聯(lián),而不必改變指示符的值。
上下文數(shù)據(jù)存儲設(shè)備350存儲與服務(wù)器鏈接模塊115已經(jīng)連接到或已經(jīng)遇到的客戶端設(shè)備120有關(guān)的上下文信息。如上文描述的,上下文信息可以包括平臺類型(例如,移動或桌面)、以及客戶端設(shè)備120的其他特性,例如在客戶端設(shè)備120上執(zhí)行的操作系統(tǒng)的類型和版本。存儲在上下文數(shù)據(jù)存儲設(shè)備350中的上下文信息還可以包括從客戶端設(shè)備120接收的其他信息,例如,如上文描述的,從客戶端設(shè)備120接收的由設(shè)備信息模塊230收集的信息。這些可以包括客戶端設(shè)備120上的安裝應(yīng)用的列表以及關(guān)于客戶端設(shè)備120的其他詳細(xì)信息??蛻舳嗽O(shè)備120的每組上下文信息可以與唯一的客戶端設(shè)備標(biāo)識符相關(guān)聯(lián)。在一些情況下,該標(biāo)識符是由指紋生成模塊220和/或指紋生成模塊320生成的客戶端設(shè)備的指紋。針對先前沒有遇到過的每個新客戶端設(shè)備120,服務(wù)器鏈接模塊115可以向上下文數(shù)據(jù)存儲設(shè)備350添加新的條目,該新的條目具有新客戶端設(shè)備120的上下文信息以及其相關(guān)聯(lián)的指紋。
客戶端信息模塊380收集關(guān)于客戶端設(shè)備120的上下文信息以存儲到上下文數(shù)據(jù)存儲設(shè)備350中。在一個實(shí)施例中,如上文針對指紋生成模塊320所描述的,客戶端信息模塊380從客戶端設(shè)備120收集基于客戶端設(shè)備120的特性的上下文信息,客戶端設(shè)備120的特性是在由客戶端設(shè)備120發(fā)出的請求中所暴露的。在一個實(shí)施例中,客戶端信息模塊380基于經(jīng)由設(shè)備信息模塊230從客戶端設(shè)備120接收的信息,從客戶端設(shè)備120接收上下文信息。
鏈接數(shù)據(jù)存儲設(shè)備360存儲生成的上下文深層鏈接和相關(guān)聯(lián)的鏈接數(shù)據(jù)以及與上下文深度鏈接交互過的那些客戶端設(shè)備120的指紋。如上文描述的,鏈接數(shù)據(jù)是可以由客戶端設(shè)備120提交以用于請求生成新的上下文深層鏈接的數(shù)據(jù),并且指紋是由指紋生成模塊220和/或指紋生成模塊320生成的客戶端設(shè)備120的唯一標(biāo)識符。一旦生成了新的上下文深層鏈接,服務(wù)器鏈接模塊115就將該鏈接的條目以及任何相關(guān)聯(lián)的鏈接數(shù)據(jù)存儲在鏈接數(shù)據(jù)存儲設(shè)備360中。一旦客戶端設(shè)備120發(fā)送了與該上下文深層鏈接相關(guān)聯(lián)的請求,就生成該客戶端設(shè)備120的指紋。該指紋隨后由服務(wù)器鏈接模塊115存儲在鏈接數(shù)據(jù)存儲360中并且與鏈接數(shù)據(jù)存儲設(shè)備360中的上下文深層鏈接相關(guān)聯(lián)。
鏈接生成模塊310響應(yīng)于由客戶端鏈接模塊122發(fā)出的請求而生成上下文深層鏈接。響應(yīng)于來自客戶端鏈接模塊122的生成上下文深層鏈接的請求,鏈接生成模塊310生成具有唯一標(biāo)識符的鏈接。如上文描述的,在一些實(shí)施例中,上下文深層鏈接是具有隨機(jī)生成的查詢字符串的url。在一個實(shí)施例中,鏈接生成模塊310還從客戶端鏈接模塊122接收鏈接數(shù)據(jù)。鏈接生成模塊310將該鏈接數(shù)據(jù)連同生成的上下文深層鏈接的唯一標(biāo)識符一起存儲在鏈接數(shù)據(jù)存儲設(shè)備360中。鏈接生成模塊310隨后將生成的上下文深層鏈接發(fā)送到客戶端鏈接模塊122。
指紋匹配模塊330找到存儲的指紋與客戶端設(shè)備所指示的或針對客戶端設(shè)備120新生成的指紋之間的匹配。指紋既被存儲在存儲客戶端設(shè)備120的上下文信息的上下文數(shù)據(jù)存儲設(shè)備350中,也被存儲在存儲上下文深層鏈接的鏈接數(shù)據(jù)的鏈接數(shù)據(jù)存儲設(shè)備360中。
在一些情況下,上下文深層鏈接服務(wù)器110從客戶端設(shè)備120接收與上下文深層鏈接相關(guān)聯(lián)的請求,該請求包括唯一指紋的指示符,其中,指示符由指紋生成模塊320先前存儲在客戶端設(shè)備120上。
在其他情況下,上下文深層鏈接服務(wù)器110從客戶端設(shè)備120接收對包括指紋的任何鏈接數(shù)據(jù)的請求。該指紋可能已經(jīng)由客戶端鏈接模塊122中的指紋生成模塊220生成。
在另外的情況下,上下文深層鏈接服務(wù)器110從客戶端設(shè)備120接收與不包括指紋指示符的上下文深層鏈接相關(guān)聯(lián)的請求。相反,指紋生成模塊320以上文描述的方法生成客戶端設(shè)備120的指紋。
在以上的情況下,指紋匹配模塊330在上下文數(shù)據(jù)存儲設(shè)備350和鏈接數(shù)據(jù)存儲設(shè)備360中搜索與從客戶端設(shè)備120接收的指紋相匹配的指紋、由接收自客戶端設(shè)備120的指紋指示符所指示的指紋、或者與由指紋生成模塊320生成的新生成的指紋相匹配的指紋。在一個實(shí)施例中,當(dāng)從客戶端設(shè)備120接收的或者由客戶端設(shè)備120指示的指紋與先前存儲的指紋準(zhǔn)確匹配時,指紋匹配模塊330找到匹配。在其他實(shí)施例中,當(dāng)從客戶端設(shè)備120接收的或者由客戶端設(shè)備120指示的指紋與先前存儲的指紋在閾值數(shù)量的元素上匹配時(例如,這可能是當(dāng)指紋由若干單獨(dú)元素構(gòu)成時的情況),指紋匹配模塊330找到匹配。
當(dāng)上下文數(shù)據(jù)存儲設(shè)備350中存在匹配時,指紋匹配模塊330向上下文響應(yīng)模塊340指示上下文數(shù)據(jù)存儲設(shè)備350中存在匹配的指紋并且指示該匹配的指紋。當(dāng)鏈接數(shù)據(jù)存儲設(shè)備360中存在匹配時,指紋匹配模塊330向鏈接數(shù)據(jù)模塊370指示鏈接數(shù)據(jù)存儲設(shè)備360中存在匹配的指紋并且指示該匹配的指紋。當(dāng)不存在匹配時,指紋匹配模塊330指示不存在匹配。
上下文響應(yīng)模塊340基于客戶端設(shè)備120的指紋確定客戶端設(shè)備120的上下文信息并且基于客戶端設(shè)備的上下文信息向客戶端設(shè)備120提供響應(yīng)。
在從客戶端設(shè)備120接收與上下文深層鏈接相關(guān)聯(lián)的請求后,上下文響應(yīng)模塊340可以從指紋匹配模塊330接收關(guān)于上下文數(shù)據(jù)存儲設(shè)備350中的匹配指紋的指示。上下文響應(yīng)模塊340從上下文數(shù)據(jù)存儲設(shè)備350取回匹配的上下文信息,以確定客戶端設(shè)備120的合適的上下文以及對來自客戶端設(shè)備120的請求的正確響應(yīng)。
在一個實(shí)施例中,針對支持應(yīng)用生態(tài)系統(tǒng)的客戶端設(shè)備120,上下文響應(yīng)模塊340使用匹配的上下文信息來確定客戶端設(shè)備120上是否安裝了應(yīng)用121,上下文深度鏈接包括針對該應(yīng)用的鏈接數(shù)據(jù)。如上文所述,上下文信息可以包括安裝在客戶端設(shè)備210上的應(yīng)用的列表。當(dāng)該信息由上下文深層鏈接服務(wù)器110從應(yīng)用121接收時,信息可以從與上下文響應(yīng)模塊340檢查其安裝狀態(tài)的應(yīng)用不同的應(yīng)用121被接收。
如果安裝了應(yīng)用,則上下文響應(yīng)模塊340在響應(yīng)中包括使得客戶端設(shè)備120初始化(例如,打開或使其成為焦點(diǎn))與上下文深層鏈接相關(guān)聯(lián)的應(yīng)用121的消息。例如,響應(yīng)可以包括標(biāo)識應(yīng)用121的url,其使得客戶端設(shè)備120上的操作系統(tǒng)初始化應(yīng)用。
如果沒有安裝應(yīng)用121,則上下文響應(yīng)模塊340在響應(yīng)中包括將客戶端設(shè)備120重定向到應(yīng)用生態(tài)系統(tǒng)的應(yīng)用商店140的應(yīng)用頁面以使用戶安裝應(yīng)用的消息。例如,響應(yīng)可以包括標(biāo)識應(yīng)用商店對接應(yīng)用中的應(yīng)用121的著陸頁面的url,其使得客戶端設(shè)備120上的操作系統(tǒng)初始化該應(yīng)用商店對接應(yīng)用并且使得該應(yīng)用商店對接應(yīng)用顯示著陸頁面。
在一個實(shí)施例中,當(dāng)上下文響應(yīng)模塊340無法獲得確定是否安裝了應(yīng)用121的上下文信息時,上下文響應(yīng)模塊340默認(rèn)發(fā)送將客戶端設(shè)備120重定向到應(yīng)用商店140的消息。
在一個實(shí)施例中,上下文響應(yīng)模塊340使用匹配的上下文信息來確定客戶端設(shè)備120的平臺類型。一旦上下文響應(yīng)模塊340確定了客戶端設(shè)備120的平臺類型,上下文響應(yīng)模塊340就利用可以由客戶端設(shè)備120的特定平臺類型執(zhí)行的響應(yīng)來響應(yīng)客戶端設(shè)備120的請求。可以由上下文響應(yīng)模塊340用于確定客戶端設(shè)備120的平臺類型的上下文信息的示例包括操作系統(tǒng)類型和版本、用戶代理信息、設(shè)備型號等。
當(dāng)平臺類型是包括應(yīng)用生態(tài)系統(tǒng)的類型時,上下文響應(yīng)模塊340可以根據(jù)應(yīng)用是否被安裝而在響應(yīng)中包括上文描述的響應(yīng)中的一個。
當(dāng)平臺類型是不支持應(yīng)用生態(tài)系統(tǒng)的平臺類型時,上下文響應(yīng)模塊340可以在響應(yīng)中包括使得客戶端設(shè)備120被重定向到由客戶端設(shè)備120支持的替選元素的消息。該替選元素向用戶呈現(xiàn)與應(yīng)用有關(guān)的信息并且還可以包括允許用戶向支持應(yīng)用生態(tài)系統(tǒng)的用戶客戶端設(shè)備120發(fā)送另一個或相同的上下文深層鏈接的接口選項(xiàng)。
例如,客戶端設(shè)備120可以是具有不支持應(yīng)用生態(tài)系統(tǒng)的操作系統(tǒng)的臺式計算機(jī),并且與上下文深層鏈接相關(guān)聯(lián)的請求可能已經(jīng)由上下文深層鏈接服務(wù)器110(例如,通過點(diǎn)擊上下文深層鏈接的超鏈接)從客戶端設(shè)備120的網(wǎng)頁瀏覽器123接收。由上下文響應(yīng)模塊340提供的響應(yīng)可以包括將網(wǎng)頁瀏覽器123重定向到替選著陸頁面,該替選著陸頁面包括使用戶向支持應(yīng)用生態(tài)系統(tǒng)的用戶智能電話發(fā)送文本消息的選項(xiàng)。被發(fā)送到智能電話的文本消息可以包括相同的上下文深層鏈接或具有相同的關(guān)聯(lián)鏈接數(shù)據(jù)的新生成的上下文深層鏈接。作為另一個示例,上下文響應(yīng)模塊340可以向客戶端設(shè)備120發(fā)送將客戶端設(shè)備120的網(wǎng)頁瀏覽器123重定向到介紹應(yīng)用121或顯示應(yīng)用的基于網(wǎng)絡(luò)的版本的標(biāo)題或著陸頁面。
在向客戶端設(shè)備發(fā)送對上下文深層鏈接的上下文響應(yīng)之后,上下文響應(yīng)模塊340修改鏈接數(shù)據(jù)存儲設(shè)備360中的、針對具有發(fā)出與上下文深度鏈接相關(guān)聯(lián)的請求的客戶端設(shè)備120的指紋的上下文深度鏈接的條目。
鏈接數(shù)據(jù)模塊370利用鏈接數(shù)據(jù)來響應(yīng)來自客戶端設(shè)備120的鏈接數(shù)據(jù)請求。該請求可以由客戶端設(shè)備120的應(yīng)用121發(fā)出。在接收到來自客戶端設(shè)備120的對鏈接數(shù)據(jù)的請求之后,鏈接數(shù)據(jù)模塊370可以從指紋匹配模塊330接收對鏈接數(shù)據(jù)存儲設(shè)備360中的匹配的指紋的指示。鏈接數(shù)據(jù)模塊370從鏈接數(shù)據(jù)存儲設(shè)備360取回針對匹配指紋的匹配鏈接數(shù)據(jù)并且將該鏈接數(shù)據(jù)返回給客戶端設(shè)備120。
在許多情況下,指紋匹配模塊330可能找不到匹配的指紋。鏈接數(shù)據(jù)模塊370可以在應(yīng)用121每次被初始化時從客戶端設(shè)備120的應(yīng)用121接收鏈接數(shù)據(jù)請求。然而,僅在一些情況下鏈接數(shù)據(jù)是可用的。這些情況包括上下文深層鏈接服務(wù)器110最近從其上安裝了應(yīng)用的客戶端設(shè)備120接收到與上下文深層鏈接相關(guān)聯(lián)的請求的情況。在這些情況下,指紋與鏈接數(shù)據(jù)存儲設(shè)備360中的鏈接數(shù)據(jù)相關(guān)聯(lián)。
在一個實(shí)施例中,鏈接數(shù)據(jù)模塊370還確定指紋被添加到鏈接數(shù)據(jù)存儲設(shè)備360中的鏈接數(shù)據(jù)條目時的時間戳。如果該時間戳超過特定范圍(例如,兩小時),則鏈接數(shù)據(jù)模塊370不取回用于發(fā)送到客戶端設(shè)備120的相關(guān)聯(lián)的鏈接數(shù)據(jù)。這使鏈接數(shù)據(jù)“失效”并且可能有助于防止具有指紋的第一客戶端設(shè)備120發(fā)送與上下文深層鏈接相關(guān)聯(lián)的請求而具有相同指紋的第二客戶端設(shè)備120之后請求相關(guān)聯(lián)的鏈接數(shù)據(jù)的場景。如果沒有使舊的請求失效的手段,則在這些情況下,鏈接數(shù)據(jù)模塊370可能將鏈接數(shù)據(jù)發(fā)送到第二客戶端設(shè)備120,但是該鏈接數(shù)據(jù)不是用于第二客戶端設(shè)備120的。然而,這樣的場景是不太可能發(fā)生的,而是僅在所涉及的兩個客戶端設(shè)備120具有足夠相似的特性以使得兩個客戶端設(shè)備120的指紋相同時才會發(fā)生。
在一個實(shí)施例中,一旦鏈接數(shù)據(jù)被成功地取回,鏈接數(shù)據(jù)模塊370就將該鏈接數(shù)據(jù)的條目從鏈接數(shù)據(jù)存儲設(shè)備360中移除。這意味著每個鏈接數(shù)據(jù)條目僅被使用一次來傳遞鏈接數(shù)據(jù)。
使用上下文深層鏈接的示例性應(yīng)用搜索引擎
在一些實(shí)施例中,服務(wù)器鏈接模塊115還包括服務(wù)器深層鏈接數(shù)據(jù)庫,該數(shù)據(jù)庫包括針對每個其支持的應(yīng)用121的位置并且與客戶端設(shè)備120上的深層鏈接服務(wù)器260類似。此外,針對服務(wù)器深層鏈接數(shù)據(jù)庫中的位置的每個條目可以與針對該位置的各種元數(shù)據(jù)(例如,標(biāo)題)相關(guān)聯(lián)。這些位置可以從每個客戶端鏈接模塊122的深層鏈接數(shù)據(jù)庫260接收,可以直接從應(yīng)用的開發(fā)者接收,或者可以在客戶端鏈接模塊122收集用戶在應(yīng)用中瀏覽過的位置時從客戶端鏈接模塊122接收。
服務(wù)器深層鏈接數(shù)據(jù)庫允許服務(wù)器鏈接模塊115針對存儲在服務(wù)器深層鏈接數(shù)據(jù)庫中的各種位置從客戶端設(shè)備120接收對于關(guān)聯(lián)應(yīng)用的搜索請求。服務(wù)器鏈接模塊115通過提供分級的搜索結(jié)果來響應(yīng)這些搜索請求,由此提供對應(yīng)用內(nèi)部的位置的搜索能力。分級的搜索結(jié)果中的每個條目包括應(yīng)用的位置。搜索結(jié)果可以根據(jù)流行度或針對每個位置收集的元數(shù)據(jù)被分級并且被存儲在服務(wù)器深層鏈接數(shù)據(jù)庫中。位置結(jié)果還可以基于在上下文數(shù)據(jù)存儲設(shè)備350中存儲的用戶的客戶端設(shè)備120的上下文信息,來指示用戶的客戶端設(shè)備120是否安裝了相關(guān)聯(lián)的應(yīng)用。
如果用戶選擇這些位置結(jié)果中的一個,則服務(wù)器鏈接模塊115利用來自結(jié)果的位置和客戶端設(shè)備120的指紋來在鏈接數(shù)據(jù)存儲設(shè)備360中建立條目。服務(wù)器鏈接模塊115利用與關(guān)聯(lián)于相同鏈接數(shù)據(jù)的上下文深層鏈接的響應(yīng)類似的響應(yīng)來對用戶的客戶端設(shè)備120做出響應(yīng),如上文針對上下文響應(yīng)模塊340所描述的那樣。例如,如果用戶的客戶端設(shè)備安裝了相關(guān)聯(lián)的應(yīng)用,則響應(yīng)將使得用戶的客戶端設(shè)備120初始化該應(yīng)用并且從搜索結(jié)果取回指示位置的鏈接數(shù)據(jù)。
示例性流程
圖4是示出了根據(jù)一個實(shí)施例的用于生成上下文深層鏈接的示例性方法400的流程圖。在一個實(shí)施例中,圖4將方法400的步驟歸到上下文深層鏈接服務(wù)器110的服務(wù)器鏈接模塊115。然而,步驟中的一些或全部可以由其他元件執(zhí)行。此外,一些實(shí)施例可以并行地執(zhí)行步驟、以不同地順序執(zhí)行步驟、或執(zhí)行不同的步驟。此外,應(yīng)該理解,在一個示例性實(shí)施例中,步驟和/或模塊可以被體現(xiàn)為指令,例如可以由參照圖7描述的處理器702執(zhí)行的指令724。
上下文深層鏈接服務(wù)器110從客戶端設(shè)備120接收410對具有指示應(yīng)用121的特定配置的鏈接數(shù)據(jù)的上下文深層鏈接的鏈接建立請求。如上文所述,應(yīng)用121的配置可以包括應(yīng)用121中的位置或其他配置信息。
上下文深層鏈接服務(wù)器110生成420包括隨機(jī)生成的標(biāo)識符的上下文深層鏈接。如上文所述,上下文深層鏈接可以是url,其具有隨機(jī)生成的標(biāo)識符作為該url的查詢字符串。
上下文深層鏈接服務(wù)器110存儲430與生成的上下文深層鏈接相關(guān)聯(lián)的鏈接數(shù)據(jù)。如上文所述,通過引用與該鏈接數(shù)據(jù)相關(guān)聯(lián)的上下文深層鏈接來取回該鏈接數(shù)據(jù)。上下文深層鏈接服務(wù)器110向客戶端設(shè)備120發(fā)送440該上下文深層鏈接。
圖5是示出了根據(jù)一個實(shí)施例的、利用基于上下文的響應(yīng)來對與上下文深層鏈接相關(guān)聯(lián)的請求做出響應(yīng)的示例性方法500的流程圖。在一個實(shí)施例中,圖5將方法500的步驟歸到上下文深層鏈接服務(wù)器110的服務(wù)器鏈接模塊115。然而,步驟中的一些或全部可以由其他元件執(zhí)行。此外,一些實(shí)施例可以并行地執(zhí)行步驟、以不同的順序執(zhí)行步驟、或執(zhí)行不同的步驟。此外,注意到,在一個示例實(shí)施例中,步驟和/或模塊可以體現(xiàn)為指令,例如由參照圖7描述的處理器702執(zhí)行的指令724。
上下文深層鏈接服務(wù)器110從客戶端設(shè)備120接收510與有效上下文深層鏈接相關(guān)聯(lián)的請求。如上文所述,上下文深層鏈接可以由超鏈接表示,并且請求可以是http請求。
上下文深層鏈接服務(wù)器110在520確定客戶端設(shè)備120是否存儲了先前生成的指紋的指示符。這可以被存儲在客戶端設(shè)備120上的cookie中。先前生成的指紋是在與客戶端設(shè)備120的先前相遇期間由上下文深層鏈接服務(wù)器110先前生成的指紋。換言之,上下文深層鏈接服務(wù)器110確定之前是否已經(jīng)遇到過特定的客戶端設(shè)備120。如以上所述,指紋是唯一的并且是基于客戶端設(shè)備120的特性而生成的。
如果客戶端設(shè)備120不具有先前存儲的指紋的指示符,則上下文深層鏈接服務(wù)器110基于客戶端設(shè)備的多個特性而生成530客戶端設(shè)備的唯一指紋。如上文所述,該指紋可以被存儲在上下文深層鏈接服務(wù)器110上并且可以由存儲在客戶端設(shè)備120上的指示符指示。
之后,上下文深層鏈接服務(wù)器110基于客戶端設(shè)備120的特性而確定550請求的上下文信息并且將上下文信息與生成的指紋相關(guān)聯(lián)。該上下文信息可以包括諸如設(shè)備型號、操作系統(tǒng)類型以及上文描述的其他特性等的信息。上下文信息和指紋可以被存儲在上下文深層鏈接服務(wù)器110上。
或者,如果客戶端設(shè)備120具有先前存儲的指紋,則上下文深層鏈接服務(wù)器110取回540由與先前生成的指紋相匹配的本地存儲指紋所標(biāo)識的客戶端設(shè)備120的上下文信息。如上文描述的,上下文深層鏈接服務(wù)器110將存儲在客戶端設(shè)備120上的指紋與本地存儲的指紋相匹配以找到被存儲在上下文深層鏈接服務(wù)器110上的相關(guān)聯(lián)的上下文信息。
上下文深層鏈接服務(wù)器110向客戶端設(shè)備發(fā)送560基于客戶端設(shè)備的上下文而選擇的響應(yīng),以使得該響應(yīng)能在客戶端設(shè)備120上操作。如上文所述,基于上下文信息,該響應(yīng)可以是不同的。例如,如果客戶端設(shè)備120被確定為不支持應(yīng)用生態(tài)系統(tǒng)的臺式計算機(jī),則上下文深層響應(yīng)服務(wù)器110可以發(fā)送將客戶端設(shè)備120重定向到著陸頁面的響應(yīng)。如果客戶端設(shè)備120支持應(yīng)用生態(tài)系統(tǒng),則上下文深層鏈接服務(wù)器110可以發(fā)送使得客戶端設(shè)備初始化與上下文深層鏈接的鏈接數(shù)據(jù)相關(guān)聯(lián)的應(yīng)用的響應(yīng)。如果上下文信息指示應(yīng)用未被安裝,則上下文深層鏈接服務(wù)器110可以發(fā)送將用戶重定向到應(yīng)用商店的響應(yīng)。
圖6是示出了根據(jù)一個實(shí)施例的、請求和發(fā)送鏈接數(shù)據(jù)的示例性交互600的交互圖。在一個實(shí)施例中,圖6將交互600的步驟歸到應(yīng)用121和上下文深層鏈接服務(wù)器110。然而,步驟中的一些或全部可以由其他元件執(zhí)行。此外,一些實(shí)施例可以并行地執(zhí)行步驟、以不同的順序執(zhí)行步驟、或執(zhí)行不同的步驟。此外,注意到,在一個示例性實(shí)施例中,步驟和/或模塊可以被體現(xiàn)為指令,例如可以由參照圖7描述的處理器702執(zhí)行的指令724。
最初,應(yīng)用121被初始化610或被啟動。如上文描述的,這可以在客戶端設(shè)備120響應(yīng)于用戶與上下文深層鏈接交互而自動地啟動應(yīng)用121時發(fā)生。例如,來自上下文深層鏈接的響應(yīng)可以使得客戶端設(shè)備120將用戶定向到應(yīng)用商店以安裝應(yīng)用121。一旦安裝了應(yīng)用121,其可以自動地初始化或由用戶初始化。應(yīng)用121基于客戶端設(shè)備120的多個特性生成620唯一的指紋。特性可以包括硬件標(biāo)識符、ip地址、或可以唯一地標(biāo)識客戶端設(shè)備120的客戶端設(shè)備120的其他標(biāo)識符或標(biāo)識符組合。應(yīng)用121向上下文深層鏈接服務(wù)器110發(fā)送包括鏈接數(shù)據(jù)請求和指紋的消息630。
上下文深層鏈接服務(wù)器110選擇由至少與所接收的指紋的閾值數(shù)量的元素相匹配的本地存儲指紋所標(biāo)識的鏈接數(shù)據(jù)。本地存儲的指紋被存儲在上下文深層鏈接服務(wù)器110上。一旦找到與從應(yīng)用121接收的指紋相匹配的本地存儲的指紋,上下文深層鏈接服務(wù)器110就選擇與指紋相關(guān)聯(lián)的鏈接數(shù)據(jù)。該鏈接數(shù)據(jù)可以被存儲在鏈接數(shù)據(jù)存儲設(shè)備360中。
上下文深層鏈接服務(wù)器110向應(yīng)用121發(fā)送具有所選擇的鏈接數(shù)據(jù)的消息650。
應(yīng)用121基于接收到的鏈接數(shù)據(jù)來對自身進(jìn)行配置,鏈接數(shù)據(jù)具有與應(yīng)用的特定配置相對應(yīng)的一個或多個配置參數(shù)。這可以在上文針對應(yīng)用配置模塊250描述的相同方法中發(fā)生。
示例性機(jī)器架構(gòu)
圖7是示出了能夠從機(jī)器可讀介質(zhì)讀取指令并且在處理器(或控制器)中執(zhí)行指令的示例性機(jī)器的各部件的框圖。具體地,圖7示出了具有計算機(jī)系統(tǒng)700的示例形式的機(jī)器的圖形化表示。計算機(jī)系統(tǒng)700可以被用于執(zhí)行指令724(例如,程序代碼或軟件)以使得機(jī)器執(zhí)行本文描述的方法(或過程)中的一個或多個。在替選的實(shí)施例中,機(jī)器可以作為獨(dú)立設(shè)備或作為連接到其他機(jī)器的相連(例如,聯(lián)網(wǎng))設(shè)備操作。在聯(lián)網(wǎng)部署中,機(jī)器可以作為服務(wù)器-客戶端網(wǎng)絡(luò)環(huán)境中的服務(wù)器機(jī)器或客戶端機(jī)器操作,或者作為對等(或分布式)網(wǎng)絡(luò)環(huán)境中的對等機(jī)器操作。計算機(jī)系統(tǒng)700被用于執(zhí)行在圖1-6中描述的過程和功能。
機(jī)器可以是服務(wù)器計算機(jī)、客戶端計算機(jī)、個人計算機(jī)(pc)、平板pc、機(jī)頂盒(stb)、智能電話、物聯(lián)網(wǎng)(iot)設(shè)備、網(wǎng)絡(luò)路由器、交換機(jī)或網(wǎng)橋、或能夠(按照順序或不按照順序地)執(zhí)行指定要由該機(jī)器執(zhí)行的動作的指令724的任何機(jī)器。此外,盡管僅示出了單個的機(jī)器,術(shù)語“機(jī)器”還應(yīng)該包括獨(dú)立地或聯(lián)合地執(zhí)行指令724以執(zhí)行本文討論的方法中的任一個或更多個的任何機(jī)器集合。
示例性計算機(jī)系統(tǒng)700包括一個或多個處理單元(一般地,處理器702)。處理器702例如是中央處理單元(cpu)、圖形處理單元(gpu)、數(shù)字信號處理器(dsp)、控制器、狀態(tài)機(jī)、一個或多個專用集成電路(asic)、一個或多個射頻集成電路(rfic)、或上述的任何組合。計算機(jī)系統(tǒng)700還包括主存儲器704。計算機(jī)系統(tǒng)可以包括存儲單元716。處理器702、存儲器704,并且存儲單元716經(jīng)由總線708通信。
此外,計算機(jī)系統(tǒng)706還包括靜態(tài)存儲器706、顯示驅(qū)動器710(例如,用于驅(qū)動等離子體顯示屏(pdp)、液晶顯示器(lc)或投影儀)。計算機(jī)系統(tǒng)700還可以包括字母數(shù)字輸入設(shè)備712(例如,鍵盤)、光標(biāo)控制設(shè)備714(例如,鼠標(biāo)、跟蹤球、游戲桿、運(yùn)動傳感器或其他指點(diǎn)設(shè)備)、信號生成設(shè)備718(例如,揚(yáng)聲器)以及網(wǎng)絡(luò)接口設(shè)備700,這些設(shè)備也被配置為經(jīng)由總線708通信。
存儲單元716包括其上存儲有體現(xiàn)本文描述的方法或功能中的任何一個或更多個的指令724(例如,軟件)的機(jī)器可讀介質(zhì)722。在由計算機(jī)系統(tǒng)700執(zhí)行期間,指令724還可以完全地或至少部分地駐留在主存儲器704或處理器702內(nèi)(例如,在處理器的高速緩存內(nèi)),主存儲器704和處理器702還構(gòu)成機(jī)器可讀介質(zhì)。指令724可以經(jīng)由網(wǎng)絡(luò)接口設(shè)備720、通過網(wǎng)絡(luò)726被發(fā)送或接收。
盡管在示例性實(shí)施例中將機(jī)器可讀介質(zhì)722顯示為靜態(tài)介質(zhì),但術(shù)語“機(jī)器可讀介質(zhì)”應(yīng)該被理解為包括能夠存儲指令724的單個介質(zhì)或多個介質(zhì)(例如,集中式或分布式數(shù)據(jù)庫或相關(guān)聯(lián)的緩存或服務(wù)器)。術(shù)語“機(jī)器可讀介質(zhì)”還應(yīng)該被理解為包括能夠存儲由機(jī)器執(zhí)行且使得機(jī)器執(zhí)行本文公開的方法中的任一個或更多個的指令724的任何介質(zhì)。術(shù)語“機(jī)器可讀介質(zhì)”包括——但不限于——以固態(tài)存儲器、光介質(zhì)和磁介質(zhì)形式的數(shù)據(jù)存儲庫。
其他考慮
本文描述的上下文深層鏈接系統(tǒng)提供了多種優(yōu)點(diǎn)和益處,包括使上下文深層鏈接在客戶端設(shè)備的任何上下文中都能工作的能力。相反地,取決于客戶端設(shè)備的上下文,在沒有理解客戶端設(shè)備的上下文的情況下所生成的深層鏈接將根據(jù)客戶端設(shè)備的上下文而提供可能不能正確工作的鏈接。這會在客戶端設(shè)備上產(chǎn)生錯誤消息。相反地,本公開可以產(chǎn)生在任何上下文中都不導(dǎo)致錯誤的上下文深層鏈接。
為實(shí)現(xiàn)該目的,在一個實(shí)施例中,如上文公開的,上下文深層鏈接系統(tǒng)利用唯一指紋來標(biāo)識客戶端設(shè)備,并且收集該客戶端設(shè)備的上下文信息,以將該上下文信息與指紋相關(guān)聯(lián)。由于系統(tǒng)是跨多個應(yīng)用被使用的,因此其能夠跨平臺地收集上下文信息并且能夠得到比每個應(yīng)用能夠單獨(dú)收集的更多的關(guān)于每個客戶端設(shè)備的信息。
另一個優(yōu)點(diǎn)是,系統(tǒng)可以將鏈接數(shù)據(jù)從應(yīng)用或請求上下文深層鏈接的其他實(shí)體傳送到在鏈接數(shù)據(jù)中指示并且該鏈接數(shù)據(jù)提供其特定配置的任何其他應(yīng)用。這與其他系統(tǒng)不同,其他系統(tǒng)沒有跨應(yīng)用和平臺地被標(biāo)準(zhǔn)化,因此在范圍上受到限制。
在整個本說明書中,多個實(shí)例可以實(shí)現(xiàn)在單個實(shí)例中描述的部件、操作或結(jié)構(gòu)。盡管一個或更多個方法中的各個操作被示出和描述為單獨(dú)的操作,但各個操作中的一個或更多個可以被并行地執(zhí)行,并且不需要以所示出的順序執(zhí)行這些操作。在示例性配置中表示為分開的部件的結(jié)構(gòu)和功能可以被實(shí)現(xiàn)為組合的結(jié)構(gòu)或部件。類似地,表示為單個部件的結(jié)構(gòu)和功能可以被實(shí)現(xiàn)為分開的部件。這些以及其他變型、修改、添加以及改進(jìn)都落入本發(fā)明所要求保護(hù)的主題的范圍內(nèi)。
某些實(shí)施例在本文中被描述為包括邏輯或若干部件、模塊或機(jī)構(gòu),例如,如圖1、圖2和圖3中所示出的。模塊可以構(gòu)成軟件模塊(例如,在機(jī)器可讀介質(zhì)上或傳輸信號中體現(xiàn)的代碼)或硬件模塊。硬件模塊是能夠執(zhí)行某些操作的有形單元并且可以以特定的方式被配置或布置。在示例性實(shí)施例中,一個或更多個計算機(jī)系統(tǒng)(例如,獨(dú)立計算機(jī)系統(tǒng)、客戶端或服務(wù)器計算機(jī)系統(tǒng))或一個計算機(jī)系統(tǒng)的一個或更多個硬件模塊(例如,處理器或一組處理器)可以由軟件(例如,應(yīng)用或應(yīng)用部分)配置為能夠執(zhí)行本文描述的某些操作的硬件模塊。
在各種實(shí)施例中,硬件模塊可以被機(jī)械地或電氣地實(shí)現(xiàn)。例如。硬件模塊可以包括被永久配置為執(zhí)行某些操作的專用電路或邏輯(例如,被配置為諸如現(xiàn)場可編程門陣列(fpga)或?qū)S眉呻娐?asic)的專用處理器)。硬件模塊還可以包括由軟件暫時地配置為執(zhí)行某些指令的可編程邏輯或電路(例如,被配置為包括在通用處理器或其他可編程處理器內(nèi))。應(yīng)該理解的是,對在專用或永久配置的電路中還是在暫時配置的電路(例如,由軟件配置)中機(jī)械地實(shí)現(xiàn)硬件模塊這一決定是由于考慮到成本和時間方面的因素。
本文描述的示例性方法的各種操作可以至少部分地由一個或多個處理器(例如,處理器702)執(zhí)行,處理器(例如,由軟件)被暫時地配置或永久地配置為執(zhí)行相關(guān)的操作。不論暫時地還是永久地配置,這樣的處理器都可以構(gòu)成操作成執(zhí)行一個或更多個操作或功能的處理器實(shí)現(xiàn)的模塊。在一些示例性實(shí)施例中,本文中所引用的模塊包括處理器實(shí)現(xiàn)的模塊。
一個或更多個處理器也可以操作成在“云計算”環(huán)境中或作為“軟件即服務(wù)”(saas)支持相關(guān)操作的執(zhí)行。例如,至少一些操作可以由一組計算機(jī)(作為包括處理器的機(jī)器的示例)來執(zhí)行,這些操作可以經(jīng)由網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))以及經(jīng)由一個或更多個合適的接口(例如,應(yīng)用程序接口(api))被訪問。
某些操作的執(zhí)行可以分布在一個或多個處理器上,不是僅駐留在單個的機(jī)器內(nèi),而是被部署在若干機(jī)器上。在一些示例實(shí)施例中,一個或多個處理器702或處理器實(shí)現(xiàn)的模塊可以位于單個的地理位置上(例如,在家庭環(huán)境、辦公環(huán)境、或服務(wù)器群組內(nèi))。在其他示例性實(shí)施例中,一個或多個處理器或處理器實(shí)現(xiàn)的模塊可以分布在多個地理位置上。
本說明書的一些部分是在以下方面中介紹的:對在機(jī)器存儲器(例如,計算機(jī)存儲器)內(nèi)被存儲為位或二進(jìn)制數(shù)字信號的數(shù)據(jù)進(jìn)行操作的算法或符號表示。這些算法或符號表示是由數(shù)據(jù)處理領(lǐng)域中的普通技術(shù)人員用來將他們的工作實(shí)質(zhì)傳達(dá)給該領(lǐng)域的其他技術(shù)人員的技術(shù)的示例。如本文使用的,“算法”是產(chǎn)生期望結(jié)果的操作或類似處理的自洽序列。在這樣的背景下,算法和操作涉及對物理量的物理操作。通常,但非必須地,這樣的量可以采取能夠由機(jī)器存儲、訪問、傳送、組合、比較或其他操縱的電、磁或光信號的形式。主要出于通用的原因,使用諸如“數(shù)據(jù)”、“內(nèi)容”、“位”、“值”、“元素”、“符號”、“字符”、“項(xiàng)”、“數(shù)字”、“數(shù)值”等詞匯來指代這樣的信號有時是方便的。然而,這些詞匯僅是便利的標(biāo)簽而不是與適合的物理量相關(guān)聯(lián)。
除非專門指出,否則本文中的使用諸如“處理”、“計算”、“運(yùn)算”、“確定”、“呈現(xiàn)”、“顯示”等詞匯所進(jìn)行的討論可以指代機(jī)器(例如,處理器)的動作或過程,該機(jī)器對被表示為一個或多個存儲器(例如,易失性存儲器、非易失性存儲器或其組合)、寄存器或接收、存儲、傳送、或顯示信息的其他機(jī)器部件內(nèi)的物理(例如,電、磁、或光)量的數(shù)據(jù)進(jìn)行操縱或變換。
如本文中使用的,“一個實(shí)施例”或“實(shí)施例”是指結(jié)合該實(shí)施例描述的特定元件、特征、結(jié)構(gòu)或特征被包括在至少一個實(shí)施例中,在說明書的不同位置中出現(xiàn)的短語“在一個實(shí)施例中”不一定都指同一個實(shí)施例。
可以使用表述“耦合”和“連接”以及其衍生詞來描述一些實(shí)施例。例如,可以使用術(shù)語“耦合”來描述一些實(shí)施例以指示兩個或更多個元件直接地物理接觸或電接觸。然而,術(shù)語“耦合”還可以表示兩個或更多個元件不與彼此直接接觸,但仍然與彼此共同操作或交互。實(shí)施例不受這樣的上下文的限制。
如本文使用的,術(shù)語“包括”、“包含”、“含有”、“具有”、“有”或其任何其他變形旨在覆蓋非排他性的包含。例如,包括元件列表的過程、方法、物品、或裝置不一定僅受限于這些元件,而是可以包括沒有明確列出的、或這些過程、方法、物品、或裝置所固有的其他元件。此外,除非明確地相反地陳述,否則,“或”指代開放性的或而不是排他性的或。例如,條件a或b由以下中的任何一個滿足:a為真(或存在)并且b為偽(或不存在)、a為偽(或不存在)并且b為真(或存在)、以及a和b都為真(或存在)。
此外,本文中采用“一”或“一個”來描述實(shí)施例的元件或部件。這僅是出于方便并且為了給出一般性的發(fā)明觀念。這樣的描述應(yīng)該被理解為包括一個或至少一個,并且單數(shù)形式還包括復(fù)數(shù)形式,除非其明顯地是指單數(shù)。
通過閱讀本公開內(nèi)容,本領(lǐng)域技術(shù)人員將理解,可以通過本文公開的原理實(shí)現(xiàn)針對用于生成和響應(yīng)上下文深層鏈接的系統(tǒng)和過程的額外的替選結(jié)構(gòu)和功能設(shè)計。由此,盡管已經(jīng)示出和描述了特定的實(shí)施例和應(yīng)用,但應(yīng)該理解的是,所公開的實(shí)施例不限于本文公開的確切的構(gòu)造和部件。對本領(lǐng)域技術(shù)人員顯而易見的是,可以在不背離在所附的權(quán)利要求中限定的精神和范圍的前提下對本文公開的方法和裝置的布置、操作和細(xì)節(jié)做出各種修改、改變和變化。