1.在app的info.plist中的information Property List中新增URL types一项,
其中url identifier可任意写如 com.***.***
URL Schemes 是其他应用唤起本项目的schemes
如下图

其中url identifier可任意写如 com.***.***
URL Schemes 是其他应用唤起本项目的schemes
如下图
2. 在appB的代码中打开刚才定义的URL,代码如下
NSURL *url = [NSURL URLWithString:@"kdweibov4:"];
[[UIApplication sharedApplication] openURL:url];
3.打开之后,会调用appA的AppDelegate的
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {}
如果项目未启动,由其他项目唤醒该项目,可能涉及到rootviewController的情况,所以一般需要在方法中处理唤醒方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
BOOL result = YES;
if (launchOptions != nil) {
NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
if (url != nil && ![url isFileURL])
{
//这里设置no,不重复调用 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
result = NO;
if (![[KDLinkInviteConfig sharedInstance] isAvailableInviteFromUrl:url]) {
[KDAppLaunch openLaunchFromUrl:url];
}
}
BOOL canOpen = [KDAppLaunch openLaunchFromUrl:url];
BOS_CONFIG.bLaunchByShare = canOpen;
}
return result;
}
4.判断是否能打开应用
[[UIApplication sharedApplication] canOpenURL:[NSURLURLWithString:@"kdweibov4://"]];
应用之间传值
- (IBAction)A:(id)sender
{
NSString *str = @"nav://com.b.nav?viewId=%@";
//转码
NSString *urlStr = [[NSString stringWithFormat:str, @"letters"]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlStr];
[[UIApplication sharedApplication] openURL:url];
}
- (IBAction)B:(id)sender
{
NSString *str = @"nav://com.b.nav?viewId=%@";
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:str, @"numbers"]];
[[UIApplication sharedApplication] openURL:url];
}
在appDelegate文件中调用如下:
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
//[url host] 获取到url identifier
//[url scheme] 获取本次唤起的scheme
//[url query] 获取唤起时带有的参数 如 viewId = 222
if ([[url host] isEqualToString:@"com.b.nav"]) {
NSString *viewId = [[url query] substringFromIndex:[[url query] rangeOfString:@"viewId="].location + 7];
if ([viewId isEqualToString:@"letters"])
{
OneViewController *one = [[OneViewController alloc] init];
//解码:
NSString *test = [[url query]
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
one.testLabel.text = test;
[self.viewController presentViewController:one animated:YES completion:nil];
}
else
{
TwoViewController *two = [[TwoViewController alloc] init];
[self.viewController presentViewController:two animated:YES completion:nil];
}
}
return YES;
}
调用系统应用如下:
上面讲述的是调用自身的应用,讲解了如何在自己应用之间调用问题,今天介绍一下如果
调用IOS自带的app的方法
一、调用app store界面方法
在实际开发中,往往要推荐自己其他应用和推荐自己的收费软件,那么我们就需要在程序
中直接连接到app store的相应页面。
实际上的做法很简单,使用的还是UIApplication类的OpenURL方法:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"程序的相应连接"]];
二、调用其它应用的方法
1)调用 自带mail
[[UIApplicationsharedApplication] openURL:
[NSURLURLWithString:@"mailto://admin@hzlzh.com"]];
2)调用 电话phone
[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"tel://8008808888"]];
3)调用 SMS
[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];
4)调用自带 浏览器 safari
[[UIApplicationsharedApplication] openURL:
[NSURLURLWithString:@"http://www.hzlzh.com"]];
5)调用 Remote
[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"remote://fff"]];
上面是最基本的语句,没什么处理过程。
如:调用phone可以传递号码,调用SMS只能设定号码,不能初始化SMS内容。