Android deep links技術(shù)實現(xiàn)

說好要寫示例文章來給大家演示一下什么樣的文章才比較適合在微信上發(fā),那么本篇就是一個典型的標桿了。有朋友在群里問我,怎么樣實現(xiàn)從網(wǎng)頁中直接打開App的效果,這個問題實現(xiàn)起來并不復雜,但是卻有很多人都不會,像這種文章就太適合在微信上發(fā)了。

實際上這種技術(shù)是個一個專業(yè)名詞的,叫deep links,在Google Ads里面用的比較多。比如說你是一個購物的App,花錢在人家的網(wǎng)頁上掛了個裙子的廣告鏈接,那么當用戶點擊了這個廣告鏈接,最理想的效果就是直接打開你的App的裙子界面,然后用戶可能就會直接購買了。

怎么樣實現(xiàn)這種效果呢?其實并不復雜,說白了就是利用Android的隱式Intent機制,對于隱式Intent如果還不了解的朋友請參考第一行代碼第二章,講的很透徹。

下面開始嘗試實現(xiàn)deep links功能,首先我們來認識一下鏈接,對于鏈接大家肯定是再熟悉不過了,比如這樣:

http://www.example.com/

其中http部分是協(xié)議,www.example.com部分是域名。那么根據(jù)我們平時上網(wǎng)的經(jīng)驗,域名部分一般都是各個網(wǎng)站的具體網(wǎng)址,而協(xié)議部分基本都是http,因為這是一個最廣泛使用的協(xié)議。

而我們實現(xiàn)deep links功能其實也是借助這樣的鏈接機制,但是我們不必拘泥于http協(xié)議,而是可以自定義任何的協(xié)議。

了解了這個概念之后就可以開始寫一些具體的代碼了,新建一個Android項目,然后打開AndroidManifest.xml文件,在MainActivity中添加如下內(nèi)容:

? ?...... ? ? ? ? ? ? ? ? ? ? ? ? ? ?

對于熟悉隱式Intent的部分,這部分代碼應(yīng)該不難理解。這里我們新增了一個標簽,在里面加入了action,category和data三部分內(nèi)容。其中action和category部分要固定寫成這個樣子,我們不能修改的,因為當你點擊一個html鏈接時系統(tǒng)自動發(fā)出就是這樣的action和category。

然后data部分就需要我們來自定義了,android:scheme用于指定協(xié)議,類似于http這樣的東西,這里我們指定成了com.example.androidtest,這是一個自定義的協(xié)議,指定成這樣是為了避免和其它的應(yīng)用程序沖突,從而誤把deep links鏈到人家的程序里去了。除了android:scheme之外,我們還可以通過android:host來指定域名,android:port來指定端口,android:path來指定路徑,這些屬性都可以對deep links進行更多的限制,要滿足特定條件才能打開指定App。那這里我希望只要是使用com.example.androidtest協(xié)議的鏈接就能打開我們的程序,因此就不對其他屬性進行設(shè)置了。

現(xiàn)在將程序安裝到手機上就可以了。

為了測試這個功能,我在本地搭建了一個服務(wù)器,然后在網(wǎng)頁上放了這樣一個鏈接:

Try Deep Links

也就是說,當點擊了Try Deep Links這個鏈接時,會嘗試跳轉(zhuǎn)到com.example.androidtest://buydress這個界面,那么我們現(xiàn)在來試試吧,結(jié)果如下:

可以看到,deep links已經(jīng)生效了。

那么有的朋友可能還會有疑問,這樣只是打開了程序的MainActivity,如果真的像剛才介紹的一樣,我想要直接打開購買裙子的界面該怎么辦呢?總不能給每個Activity都設(shè)置一個deep link吧?確實沒有必要,我們可以通過非常簡單的界面跳轉(zhuǎn)來實現(xiàn)這個功能。比如說上面的鏈接,除了scheme之外,還有一個叫做buydress的host,我們只需要在MainActivity中取出這個host,判斷出來原來是你想買裙子的,然后跳轉(zhuǎn)到裙子界面就可以了。具體代碼如下:

publicclassMainActivityextendsAppCompatActivity{

@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState); ? ? ? ?setContentView(R.layout.activity_main);

Intentintent=getIntent();

if(intent!=null) {

Uriuri=intent.getData();

Stringhost=uri.getHost();

if("buydress".equals(host)) {

// 跳轉(zhuǎn)到賣裙子界面} ? ? ? ?} ? ?}}

本篇文章的內(nèi)容就到這里, 是不是感覺簡單易懂,而又可以學到東西?沒有貼大量的代碼,也沒有長篇大論講一個知識點,10分鐘就能讀完的精煉文章,這就是微信上最適合發(fā)的標桿技術(shù)文章了。那本篇文章也是一個比較典型的示例,希望所有有意向向我投稿的作者們可以參考一下, 不一定非要是多少高級的技術(shù)才可以拿來投稿的,你平時工作總結(jié)出的一些別人不知道的心得,也可以拿出來分享的。

至于我用來錄制GIF圖片的工具,我知道也會有很多朋友好奇,這里統(tǒng)一回答一下:Mac電腦上我使用的licecap,Window上我使用的GifCam,都是非常好用的工具,啟用錄制之后對模擬器進行操作就可以了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,662評論 25 708
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,467評論 2 45
  • 朗達.伯恩(Rhonda Byrne)的《秘密》,這是本教人如何“心想事成”的書,匯集了很多哲學家、作家、心理學家...
    杜小貓閱讀 379評論 0 0
  • 1. Servlet是什么? sun公司制訂的一種用來擴展web服務(wù)器功能的組件規(guī)范。 (1)擴展web服務(wù)器功能...
    smallnumber閱讀 300評論 0 0
  • 第一周: 我是誰?我想要什么?如何達到?對應(yīng)的就是:自我-目標-路徑。 針對現(xiàn)在在做的象禮品牌的事情,...
    上帝愛非洲閱讀 249評論 0 0