在IOS的應用中經常會看到一些應用程序通過某個點擊動作而直接跳到App Store頁面,開始很奇怪這種第三方應用于IOS的系統應用交互時怎么實現的。后來發現蘋果的開發者文檔中關于這種通信的實現是默認支持的,只要第三方 的應用符合規范即可,這里的規范就是指接下來我們要簡單介紹的東西——URL Schemes。
根據規定,IOS中支持幾種特殊的URL schemes,第三方的本地應用程序和運行在Safari的Web應用程序,通過這些URL schemes可以與IOS的系統應用進行整合,為的是為用戶提供一種無縫的用戶體驗過程。某些手機IOS應用中都會展示一些電話號碼信息,在用戶點擊這 些號碼時,通過使用規定內合適的URL,應用程序可以打開手機的Phone Application進行撥號呼叫操作。這是一種很快捷的方式,省去了用戶要記憶號碼,然后再逐次撥號的流程。
1.URL scheme打開方式
根據第三方應用程序的類型,打開IOS系統應用的方式劃分為兩種
(1) Native App或我們常稱呼的本地應用,可以通過UIApplication的openURL:方法來系統應用
(2)Web App或我們常稱呼的Web應用,指的是那些運行在Safari瀏覽器中或通過UIWebView 內嵌入本地應用的的Web應用程序,可以通過點擊或長按操作打開系統應用。
當然,順利打開系統應用的前提是二者都要保證提供指定的附和規范的URL scheme。
2.URL Scheme分類
IOS支持的URL Schemes分為以下幾類
(1)Mail Links(郵件鏈接)
通過mailto協議來加載Mail應用程序,只要提供目標郵箱地址即可,代碼如下
HTML頁面中
<a href="mailto:[email protected]">John Frank</a>
本地應用中
if(![[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"mailto:[email protected]"]] ){ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"無法打開程序" delegate:nil cancelButtonTitle:@"確認" otherButtonTitles: nil] ; [alert show] ; }
另外也可以通過to,cc,bcc,subject,body字段來指定郵件的抄送,密送,主題,消息內容。參數值都要經過URL編碼處理。
mailto:[email protected][email protected]&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!
(2)Phone links(電話鏈接)
tel協議用來啟動Phone 應用,以及呼叫指定的號碼。在網頁上點擊一個號碼鏈接會彈出一個對話框來提示用戶是否需要撥號,并在用戶允許后開始撥號。在本地的應用中,打開 一個tel協議地址會直接撥號而對用戶提示。如下 HTMl頁面中
<a href="tel:1-408-555-5555">1-408-555-5555</a>
本地應用中
if(![[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"tel:1-408-555-5555"]] ){ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"無法打開程序" delegate:nil cancelButtonTitle:@"確認" otherButtonTitles: nil] ; [alert show] ; }
新聞熱點
疑難解答