Let’s define something in this scenario :

1.Receiver app – to be invoked via custom URL

2.Sender app – who wants to invoke the app

3.Custom URL scheme – define as “happygo”

 

 

For Receiver app, here’s what to do:

1.Define the url scheme in Project/Targets/Info/URL Types as follow

螢幕快照 2016-02-04 下午12.20.51

2.AppDelegate.m – Two methods to be implemented.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 return YES;    //must return YES
 }
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
 //Check if the scheme was valid
 if ([[url scheme] isEqualToString:@"happygo"]) {
 NSString *query = [url query];
 NSArray *queryComponents = [query componentsSeparatedByString:@"&"];

 for (int i=0; i<[queryComponents count]; i++) {
 NSArray *oneParam = [[queryComponents objectAtIndex:i] componentsSeparatedByString:@"="];
 NSString *sValue = @"";
 NSString *sKey = [oneParam objectAtIndex:0];
 if (oneParam.count==2) {
 sValue = [oneParam objectAtIndex:1];
 }
 }
 //Here is what you want to do, write here.
 return TRUE;   //return TRUE because of valid scheme
 }
 return FALSE;   //invalid scheme, skip process
 }

 

 

For Sender app, here’s what to do :

1.Add the following to info.plist

<key>LSApplicationQueriesSchemes</key>
 <array>
 <string>happygo</string>
 </array>

2.Invoke the receiver app via URL form, sample source code as follow

NSString *sURL = [NSString stringWithFormat:@"happygo://www.domain.com?name=Good&phone=123123"];
 NSURL *myURL = [NSURL URLWithString:sURL];

 if ([[UIApplication sharedApplication] canOpenURL:myURL]) {
 [[UIApplication sharedApplication] openURL:myURL];
 } else {
 NSLog(@"--bad url--");
 }

Actually, you can even invoke the app via Safari Browser.

Just input the URL in Safari, press GO, and the receiver app will be invoked.

By admin

Leave a Reply