一、首先我們創(chuàng)建兩個(gè)用于測(cè)試的App項(xiàng)目?(我這里以App0-A 和 App-B 為例)
二茎芭、打開工程揖膜,設(shè)置工程的InfoPlist:添加URL Types
? ? ? ?給你的App設(shè)置一個(gè)URL Schemes(明明以你的App或者工程名來(lái)命名) 這樣就能讓其它應(yīng)用識(shí)別得到App
ps:我們這里用App_B 去 handle 我們的App_A,故我們App_A就要設(shè)置URL Schemes
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? UIButton *App_B_Button = [UIButton buttonWithType:UIButtonTypeCustom];
? ? App_B_Button.frame = CGRectMake(100, 100, 100, 50);
? ? App_B_Button.backgroundColor = [UIColor purpleColor];
? ? [App_B_Button setTitle:@"App_B" forState:UIControlStateNormal];
? ? [App_B_Button addTarget:self action:@selector(app_B:) forControlEvents:UIControlEventTouchUpInside];
? ? [self.view addSubview:App_B_Button];
}
-(void)app_B:(UIButton *)buttonB
{
? ? NSURL *url = [NSURL URLWithString:@"appA://"];
? ? [[UIApplication sharedApplication] openURL:url];
}
這樣就能實(shí)現(xiàn)App之間的跳轉(zhuǎn)的功能了梅桩。
注意:打開應(yīng)用App-A的過(guò)程中壹粟,App-A有兩種狀態(tài)。
第一種狀態(tài):App_A并沒(méi)有啟動(dòng)宿百,那么會(huì)啟動(dòng)App_A趁仙。并調(diào)用下面的方法。
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
? ? return YES;
}
第二種狀態(tài):此時(shí)B已經(jīng)啟動(dòng)了垦页,但是在后臺(tái)運(yùn)行雀费,這個(gè)時(shí)候不會(huì)調(diào)用該方法
四、若想實(shí)現(xiàn)App跳轉(zhuǎn)的同時(shí)進(jìn)行傳值痊焊,只需實(shí)現(xiàn)application的代理方法
//當(dāng)應(yīng)用程序被其他程序打開的時(shí)候會(huì)調(diào)用這個(gè)方法盏袄,在該方法中可以實(shí)現(xiàn)兩個(gè)應(yīng)用程序間的數(shù)據(jù)局傳遞
//通過(guò)這個(gè)代理方法可以攔截url
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
? ? NSString *urlStr = [url absoluteString];
? ? if ([urlStr hasPrefix:@"AppA://"]) {
? ? ? ? urlStr = [urlStr stringByReplacingOccurrencesOfString:@"AppA://" withString:@""];//參數(shù)就在url忿峻,傳值也在里面?
? ? }
? ? return NO;
}