Xamarin.iOS Applink

在Xamarin的App開發時,如何加入AppLink以解決App的孤島問題提升App使用率…iOS篇

James Tsai 2016/07/29 08:48:28
570

主題

XamarinApp開發時,如何加入AppLink解決App的孤島問題提升App使用率iOS

文章簡介

開發者辛苦製作的App發布後,當然都希望可以自己的App在使用者的手機上,能夠更快更方便的來使用,甚至可以彼此互相串聯,以解決App的孤島現象。那AppLink就是當前解決App孤島現象不可或缺的手法,就讓本文章的介紹教你如何在Xamarin所做的App當中使用AppLink~

作者

James Tsai

版本/產出日期

V1.0/2016.7.28



1. 前言


AppLink是當前App解決孤島現象的重要手法,那在Xamarin所製作的App當中,如何做呢?就讓本文章的介紹教你解決吧~


2. 環境準備


Windows 8/8.1/10

Visual Studio 2015 / Xamarin Studio


3. 本文


AppLink的製作上該要處理的面向


App當中要增加AppLink的時候,大致上分成兩個面向要處理

一、處理從其他的App進來的連結要求。
二、Browser或另外的App連結進入。


處理從其他的App進來的連結要求


這篇是iOS篇,所以我們先建立一個Xamarin.iOS全新的BlankApp(iPhone)的範本專案。



此建立好的專案當中,我們透過新增一個獨立的UIViewController,並把此UIViewController的類別名命名為ProductViewController,同時會增加一個ProductViewController.xib



接著ProductViewController.xib當中增加兩個Label其中之一Label的文字設定Product ID:,另一個LabelName命名為productIdLabel:



接著打開ProductViewController.cs,建立一個私有欄位_productId另外再加入可供傳遞productId參數的一個建構函式,並在該建構函式當中將productId設定給私有欄位_productId




繼續找到被複寫ViewDidLoad方法當中,增加以下程式碼:



接著打開AppDelegate.cs找到被複寫的FinishedLaunching方法,並且增加以下程式。



接著繼續自行複寫兩個OpenUrl的方法。



在這邊只簡單的測試撰寫iOS 9.0後會使用到的OpenUrl方法內部的實作程式碼。



最後在打開info.plist這個檔案。注意此部分的編輯在Visual Studio當中無法處理(但仍可直接編輯XML)。下圖是在Xamarin Studio當中來打開info.plist後,點選到Advanced分頁,並在URL Type當中點擊Add URL Type



然後接著在identifier當中輸入com.example.app1,在URL Scheme當中輸入
myapplinktestapp1,在Role當中選擇Viewer




Browser或另外的App連結進入解決辦法


無論是Browser或是另外App連結進入,大致上會用到的連結格式如下:



所以在我們的這個例子當中,按照前述所定義的schememyapplinktestapp1hostproducts,所以就是採用myapplinktestapp1://products再加上我們要用到的 ?id=12345當作資料,那串接起來就變成"myapplinktestapp1://products?id=12345"

首先談談Browser若在網頁上有定義"myapplinktestapp1://products?id=12345"這樣的連結出現(如下圖呈現)




當使用者用手機的瀏覽器瀏覽此網頁並且擊該連結,手機上如果已經裝有這個AppiOS就會先詢問使用者是否要直接啟動到這個App,而再透過我們之前在AppDelegate當中,自行覆寫的OpenUrl方法中的處理程式來啟動ProductViewController,並且將12345帶入productIdLabel的文字當中。







另外的App直接進入其實也不難,只要NSUrl的建立指定好所需的Uri即可。所以在我們的這個例子當中是myapplinktestapp1://products?id=12345,再使用UIApplication.SharedApplication.OpenUrl的方法Url切換即可,如下圖程式碼:



那這樣在該App2點選此按鈕時,iOS就會先詢問使用者(第一次時會詢問)是否要我們所指定的那個App1Url位址,點選確認後根據我們所寫的程式,啟動ProductViewController並且帶入id的資訊。




4. 參考來源


Applinks規範文件

http://applinks.org/documentation/


App Links for iOS

https://developer.xamarin.com/recipes/cross-platform/app-links/app-links-ios/


James Tsai