iOS打开第三方应用

来源:互联网 发布:java工程师考试 编辑:程序博客网 时间:2024/05/16 18:05

打开第三方应用

每个程序都有一个UIApplication,它在程序中以单例的形式存在,如果再创建一个UIApplication会报错误提示,可以通过以下方法来获取程序的UIApplication

UIApplication *application = [UIApplication sharedApplication];

UIApplication可以通过 OpenURL 方法来调用第三方应用,先说一下获取系统的

//    调用邮件[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://"]]; //  ://后面可不填

// 调用电话

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://07623269023"]]; //   tel://后面要填上电话号码,这里会直接拨打

// 调用 SMS(短信)

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://phoneNumber"]]; //  ://后面填电话号码,将直接进入编辑页面

// 调用 Safari

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com"]]; //  填网址,将直接通过Safari打开

打开AppStore的相应页面

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"程序的相应链接”]];

接下来说如何打开手机内的其他应用
有些应用支持第三方应用打开,像微信、qq、支付宝;有些不支持,要看该应用是否注册了程序间的通信(这里不是官方名称),只有注册了的应用,其他应用才可以根据该应用注册的Schemes来打开相应的应用。哦对了,现在才想到如果两个应用的Schemes相同会如何,这个我没有测试,你们有兴趣可以测试分享一下

应用注册Schemes的步骤
1.在info.plist中添加URLtypes
2.添加item,点开item会发现自带了一个URL identifier,这里可以当做一个键,建议把内容填上程序的bundleID,使其唯一
3.在item上再添加一个URL Schemes,会发现这是一个array,意味着你可以在这里面继续添加schemes值,一开始URLSchemes就只有一个item,把Value填上一个特定值,如iosapp
4.那么现在这个应用就算注册成功了,不过还没完,需要先把它安装到模拟器或者真机上,不然你怎么打开- -

安装完毕,此时可新建一个工程,给一个btn点击方法,

NSLog(@"按钮点击事件");[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"iosapp://success"]];

这里UIApplication通过openURL将刚才注册了的应用,通过iosapp这个值打开了,别漏了://,后面的success是带过去的一个值,后面会说,可以自定义,可以不填

现在已经可以通过一个应用打开另外一个应用了,不过还有一些拓展

在能被打开的应用的appdelegate.m中,可以捕获被打开的事件,添加如下代码

//通过第三方应用打开本程序的时候执行

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url{// 处理传递过来的参数,如上面的successNSString *text = [[url host] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];   //这里是将url带的信息进行提取//这里可以进行弹窗或者其他操作return YES;

}

0 0