成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS App自定義URL Scheme設計

移動開發 iOS
在iOS里,程序之間都是相互隔離,目前并沒有一個有效的方式來做程序間通信,幸好iOS程序可以很方便的注冊自己的URL Scheme,這樣就可以通過打開特定URL的方式來傳遞參數給另外一個程序。

例如在 iPad 上瀏覽網頁,并且 iPad 已經安裝了淘寶 HD,那么就打開下面這個鏈接就會在淘寶 HD 中查看這個商品的詳細信息,也可以方便的使用淘寶 HD 進行購買、收藏等操作。

在淘寶 HD 中查看商品“2012西藏卓明谷方舟登艦卡(船票)”

當然,如果你在 Mac OS X 中打開這個鏈接,或者在沒有安裝 淘寶 HD 的 iPad 中打開這個鏈接,會提示沒有程序來打開這個鏈接。

配置

要為 iOS 程序添加自定義協議的支持是一件很方便的事,只需要在程序的 Info.plist 添加一個 URL types 節點就可以了。在這個節點里,可以設置這個程序所支持的自定義協議名稱,像 http、ftp 這種,一般我們可以設置為程序英文名稱,像淘寶客戶端中就設置了 taobao,這樣 http:// 這個形式的 URL 就會關聯到淘寶客戶端的 App。

Info.plist config

實現

在 Info.plist 里面設置完 URL types 之后,就可以在程序中處理這類 URL 的打開請求了。

在外部程序中,如果打開了指定自定義協議的 URL,程序中 application delegate 的 application:handleOpenURL: 方法就會被調用,在這個方法里,可以獲取到觸發這個方法的 URL,可以通過對這個 URL 進行判斷,例如根據不同的 Host,不同的 Query String 來執行不同的動作。

- (void)application:(UIApplication *)application handleOpenURL:(NSURL *)url {     NSLog(@"%@", [url absoluteString]);      // 在 host 等于 item.taobao.com 時,說明一個寶貝詳情的 url,     // 那么就使用本地的 TBItemDetailViewController 來顯示     if ([[url host] isEqualToString:@"item.taobao.com"]) {          // 這里只是簡單地假設 url 形式為 http://item.taobao.com/item.htm?id=12345678         // 先獲取要查看的寶貝詳情的 itemId         NSString *itemId = [[url query] substringFromIndex:[[url query] rangeOfString:@"id="].location+3];          // 使用本地 ViewController 來顯示淘寶商品詳情         TBItemDetailViewController *controller = [[TBItemDetailViewController alloc] initWithItemId:itemId];         [self.navigationController pushViewController:controller animated:YES];         [controller release];     } } 

淘寶 for iOS

現在,淘寶 和 淘寶 HD 兩個客戶端都支持 http:// 協議,來打開特定的鏈接。目前已經支持的有:

例如,想要在自己的程序中,使用淘寶客戶端來顯示一個淘寶商品的詳情,以支持用戶可以直接在 iPhone 上購買,收藏等,就可以使用下面的代碼:

- (void)showItemInTaobao4iOS:(NSString *)itemId {     // 構建淘寶客戶端協議的 URL     NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://item.taobao.com/item.htm?id=%@", itemId]];      // 判斷當前系統是否有安裝淘寶客戶端     if ([[UIApplication sharedApplication] canOpenURL:url]) {         // 如果已經安裝淘寶客戶端,就使用客戶端打開鏈接         [[UIApplication sharedApplication] openURL:url];     } else {         // 否則使用 Mobile Safari 或者內嵌 WebView 來顯示         url = [NSURL URLWithString:[NSString stringWithFormat:@"http://item.taobao.com/item.htm?id=%@", itemId]];         [[UIApplication sharedApplication] openURL:url];     } } 

使用淘寶客戶端來打開淘寶鏈接的好處就是可以讓用戶更加方便的去購買商品,而不需要再重新登錄,或者把用戶名密碼給了第三方的網站而導致安全隱患。

擴展性

在淘寶客戶端中,支持的 URL 往往是淘寶網站已經有的鏈接,這些鏈接的 QueryString 中所帶的參數往往已經滿足了使用本地代碼顯示內容的需要,但是為了擴展性考慮,就需要添加一些額外的參數,并且與原有 QueryString 中不沖突的參數名稱。通過這些額外的參數,再實現客戶端打開鏈接時更多的自定義行為。

例如,如果在打開特定 URL,進行一些操作后需要再返回原來的程序,就會需要在 URL 中添加類似于 callback 這樣的參數,這樣在客戶端處理完用戶的操作后,可以將用戶操作的結果返回給原來的程序,從而實現程序間的通信。

示例:

- (void)buyItemInTaobao4iOS:(NSString *)itemId {     // 構建淘寶客戶端協議的 URL     NSString *format = @"http://item.taobao.com/item.htm?id=%@&_action=buy&_callback=myapp://taobaobuysuccess";     NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:format, itemId]];      // 使用淘寶客戶端打開鏈接     [[UIApplication sharedApplication] openURL:url]; } 

注意:當前淘寶客戶端并不支持這樣的調用方式,這里僅是一個示例。

當然,在使用這種方式實現程序間通信的時候,需要考慮檢查一下來源 URL 的合法性,防止一些非法的調用造成用戶的損失。

結語

通過自定義協議地支持,可以將 iOS 程序的一些功能和服務提供給外部程序,也可以實現 Web 和本地應用之間的互相調用。

如果你的 iOS 程序有這些需求的話,那么就可以考慮在 iOS 程序中添加自定義協議的支持了。

責任編輯:佚名 來源: Architecting Life
相關推薦

2021-01-20 08:58:39

iOS 14桌面圖標快捷指令

2013-06-27 11:10:01

iOS開發自定義UISlider

2013-07-18 16:09:10

自定義iOS狀態欄iOS開發iOS學習

2017-10-25 14:07:54

APPiOSxcode

2011-08-02 11:17:13

iOS開發 View

2013-05-30 15:53:17

iOS開發iOS SDKPopver

2015-02-12 15:33:43

微信SDK

2015-01-15 16:45:05

iOS源碼自定義畫圖

2012-12-24 14:42:48

iOS自定義狀態欄

2011-03-02 10:24:23

DashboardAndroid用戶界面設計模板

2015-02-12 15:38:26

微信SDK

2022-10-09 15:13:18

TextPickerArkUI eTS

2022-10-10 14:51:51

ArkUI eTSPieChart組件

2016-11-16 21:55:55

源碼分析自定義view androi

2016-12-26 15:25:59

Android自定義View

2015-10-12 16:47:13

iOS下拉線條動畫

2016-04-06 11:14:48

iOS相機自定義

2011-06-23 10:49:13

Qt 自定義信號

2021-01-11 11:36:23

鴻蒙HarmonyOSApp開發

2009-07-06 16:59:26

JSP自定義標簽
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲a一区二区 | 亚洲国产乱码 | 久久久久久久久久久久久9999 | 亚洲成人天堂 | 日韩精品免费视频 | 欧美成人hd| 欧美videosex性极品hd | 国产91视频免费 | 超碰成人免费 | 成人午夜免费视频 | 国产欧美一区二区三区在线看 | 久久国产精品一区二区三区 | 日韩三级 | 日韩欧美一区二区三区免费看 | 日韩欧美视频在线 | 成人福利在线 | 日韩成年人视频在线 | 国产精品视频网 | jlzzxxxx18hd护士 | 天天干天天草 | 欧美区日韩区 | av在线播放网址 | 精品成人在线观看 | 成年视频在线观看福利资源 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 亚洲色图在线观看 | 国产高潮好爽受不了了夜色 | 精品国产乱码久久久久久88av | 一区二区三区日 | 日韩伦理一区二区三区 | 国产观看 | 国产午夜精品福利 | 国精产品一区一区三区免费完 | 六月婷婷久久 | 久久久99精品免费观看 | 欧美a级网站 | 欧美日韩精品在线一区 | 国产高清视频 | 久草新在线| 欧美v日韩v | 亚洲欧美在线观看 |