很多次都用到了缠借,iOS中實現(xiàn)一個應(yīng)用啟動另外一個應(yīng)用的功能干毅。
一、首先為要跳轉(zhuǎn)的APP泼返,添加自定義URL協(xié)議的Schemes的id硝逢,很多成熟的app都有固定的Schemes的id,下面再說绅喉,首先添加自定義URL協(xié)議渠鸽,添加方法這里介紹兩種:
? ? 第一種:直接在Info.plist里面添加,如圖:
在這里柴罐,URL Schemes 的item的值是APP跳轉(zhuǎn)過程中的key徽缚,也就是自定義的url協(xié)議向iphone注冊的key,URL identifier就相當(dāng)于參數(shù),你可以跳轉(zhuǎn)到你的app的某一個具體功能頁面革屠,甚至事件凿试。這里也可以不填寫
第二種:可以直接在info的URL types中添加如圖:
二排宰、實現(xiàn)跳轉(zhuǎn)的代碼,在這里使用openURL來實現(xiàn)APP之間的跳轉(zhuǎn)那婉,隨著xcode的更新板甘,目前需要添加白名單,過程如下:
? 第一:添加白名單详炬,在自己的的應(yīng)用程序的的info.plist中添加LSApplicationQueriesSchemes屬性虾啦,其類型為數(shù)組,然后在數(shù)組的下面添加要跳轉(zhuǎn)的app的URL Schemes的key痕寓。添加白名單如圖:
?第二:編寫代碼實現(xiàn)跳轉(zhuǎn)傲醉,這里跳轉(zhuǎn)用的是openurl,跳轉(zhuǎn)的test02的app呻率,如圖:
代碼如下:
- (IBAction)skipOtherApp:(UIButton *)sender {
NSURL* open_URL_A = [NSURL URLWithString:@"test02://"];
//判斷是否是否有can打開應(yīng)用程序硬毕,如果成功就打開
if ([[UIApplication sharedApplication] canOpenURL:open_URL_A]) {
NSLog(@"可以打開");
[[UIApplication sharedApplication] openURL:open_URL_A];
}
}
三:app在跳轉(zhuǎn)過程中的參數(shù)傳輸,當(dāng)跳轉(zhuǎn)到url Schemes為test02時礼仗,將指定的數(shù)據(jù)傳送過去吐咳,url Schemes為test02的程序在對數(shù)據(jù)處理(常用的參數(shù)傳輸為:test02登錄數(shù)據(jù),test02跳轉(zhuǎn)到指定界面等)
(1)參數(shù)傳遞
將上面的代碼:NSURL* open_URL_A = [NSURL URLWithString:@"test02://"];
修改成為:NSURL* open_URL_A = [NSURL URLWithString:@"test02://name=test01&password=123456"];
這樣test01跳轉(zhuǎn)到test02時的傳輸數(shù)據(jù)為"name=test01&password=123456",而在test02中處理傳遞數(shù)值的位置為appdelegate.m元践,在這里添加方法如下:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation韭脊;
具體解釋如圖:
(2)從自己的app跳轉(zhuǎn)到app store 下載指定的app,具體代碼如下:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.apple.com/gb/app/id391945719?mt=8"]];
其中id391945719可以改為你指定的app的id单旁,當(dāng)然你也可以將指定app的下載地址的https改為itms就可以了沪羔。