1、先自己定義一個自定義協(xié)議,在Info.plist中加URL types節(jié)點。在這個節(jié)點中定義程序所支持的自定義協(xié)議名稱。在調用時,直接調用todolist://這個URL就可以啟用另一個app了

還要在plist中加https的設置
2、在自己的方法中去啟調另一個程序:
- (void)showItemInTaobao4iOS:(NSString *)itemId {
// 構建客戶端協(xié)議的 URL
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"todolist://"]];
// 判斷當前系統(tǒng)是否有安裝url scheme為todolist://的客戶端
if ([[UIApplication sharedApplication] canOpenURL:url]) {
// 如果已經安裝了這個客戶端,就打開客戶端
[[UIApplication sharedApplication] openURL:url];
} else {
//提示你并未安裝這個客戶端
? ? ? ? ? ? }
}
2.1 跳轉到指定的界面
在淘寶客戶端中,支持的 URL 往往是淘寶網站已經有的鏈接,這些鏈接的 QueryString 中所帶的參數往往已經滿足了使用本地代碼顯示內容的需要,但是為了擴展性考慮,就需要添加一些額外的參數,并且與原有 QueryString 中不沖突的參數名稱。通過這些額外的參數,再實現(xiàn)客戶端打開鏈接時更多的自定義行為。
例如,如果在打開特定 URL,進行一些操作后需要再返回原來的程序,就會需要在 URL 中添加類似于 callback 這樣的參數,這樣在客戶端處理完用戶的操作后,可以將用戶操作的結果返回給原來的程序,從而實現(xiàn)程序間的通信。
- (void)buyItemInTaobao4iOS:(NSString *)itemId {
// 構建淘寶客戶端協(xié)議的 URL
NSString *format = @"taobao://item.taobao.com/item.htm?id=%@&_action=buy&_callback=myapp://taobaobuysuccess";
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:format, itemId]];
// 使用淘寶客戶端打開鏈接
[[UIApplication sharedApplication] openURL:url];
}
注意:當前淘寶客戶端并不支持這樣的調用方式,這里僅是一個示例。
當然,在使用這種方式實現(xiàn)程序間通信的時候,需要考慮檢查一下來源 URL 的合法性,防止一些非法的調用造成用戶的損失。
3、傳遞參數 在自定義了 URL scheme 的應用中,app delegate 必須實現(xiàn)以下方法:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"Calling Application Bundle ID: %@", sourceApplication);
NSLog(@"URL scheme:%@", [url scheme]);
NSLog(@"URL query: %@", [url query]);
return YES;
}
這塊我調啟另一個應用再返回原來的應用采用了參數的返回
參考文章
http://www.cocoachina.com/industry/20140522/8514.html
http://www.cnblogs.com/xiaouisme/archive/2012/03/14/2396006.html