4. 通过Safari浏览器测试自定义的URL Schemes APP跳转
iOS中使用URL Scheme进行App跳转,比如在应用内提示安装另一个应用时就以url打开safari,然后打开app store那样
1.URL Scheme的作用
我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的。但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便app之间互相调用而设计的。我们可以通过系统的OpenURL来打开该app,并可以传递一些参数。
例如:你在Safari里输入www.alipay.com,就可以直接打开你的支付宝app,前提是你的手机装了支付宝。如果你没有装支付宝,应该显示的是支付宝下载界面,点击会跳到AppStore的支付宝下载界面。
URL Scheme必须能唯一标识一个APP,如果你设置的URL Scheme与别的APP的URL Scheme冲突时,你的APP不一定会被启动起来。因为当你的APP在安装的时候,系统里面已经注册了你的URL Scheme。
一般情况下,是会调用先安装的app。但是iOS的系统app的URL Scheme肯定是最高的。所以我们定义URL Scheme的时候,尽量避开系统app已经定义过的URL Scheme。
下面就举例来实现一下,应用A跳转到应用B
2.如何 注册URL Scheme
1.在应用B工程的info.plist里添加URL types
2.添加URL Schemes
3.设置URL Schemes 和设置URL Identifier
URL Identifier是自定义的 URL scheme 的名字,一般采用反转域名的方法保证该名字的唯一性,比如 com.iOSStrongDemo.www,也可以不设置,或者随便设置一个,但必须保证唯一性
3.APP之间跳转测试
1.不带参数的方法(应用A里面)
- (IBAction)click:(UIButton *)sender {
NSString *url = @"isTony://tony";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url] options:@{} completionHandler:^(BOOL success) {
2.带参数的方法
- (IBAction)click:(UIButton *)sender {
NSString *url = @"isTony://tony?name=tony&phone=18788888888";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url] options:@{} completionHandler:^(BOOL success) {
3.应用B的AppDelegate.m里面监测是否跳转成功
//iOS9之前走这个方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url
// 接受传过来的参数
NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"打开啦"
message:text
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
return YES;
//iOS9以后走的是这个方法
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
NSLog(@"Calling Application Bundle ID: %@", options[UIApplicationOpenURLOptionsSourceApplicationKey]);
NSLog(@"URL scheme: %@", [url scheme]);
NSLog(@"URL query: %@", [url query]);
NSString *text = [url query];
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"跳转成功啦!" message:text preferredStyle:UIAlertControllerStyleAlert];
[alertVC addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction*action) {
[self.window.rootViewController presentViewController:alertVC animated:YES completion:nil];
return YES;
4.跳转成功视频
4. 通过Safari浏览器测试自定义的URL Schemes APP跳转
我们也可以在Safari浏览器地址栏里输入:isTony:// 也是可以跳转成功的
iOS中使用URL Scheme进行App跳转,比如在应用内提示安装另一个应用时就以url打开safari,然后打开app store那样1.URL Scheme的作用我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的。但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便app之间互相调用而设计的。我们可以通过系统的OpenURL来打开该app,并可以传递一些参数。例如:你在Safari里输入www.alipay.com,就可以
一. 跳转到“设置”
//>=iOS8.0可用
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
二. 跳转到设置的其它位置
1. 首先针对Info.plist添加如下选项
2. 调用跳转代码,如下
//跳转到“About”(
1、新建DemoA空工程
2、找到TARGETS,在URL Types中添加URL Schemes为demoA
3、在info.plist文件中添加LSApplicationQueriesSchemes,Type选择Array,添加item0为demoB
2、DemoB
一、scheme方式跳转
1、A --> B ,跳转前判断目标App是否安装
在A的Info.plist的LSApplicationQueriesSchemes,配置B的scheme(即A中添加B跳转的白名单);B的Info.plist的URL types里,配置好自身的scheme;A内,可以通过
NSURL *url = [NSURL URLWithString:@"目标App的scheme://"];
[[UIAppli
URL Scheme 是一种 iOS 应用程序之间进行通信的方式。它允许应用程序通过 URL 启动另一个应用程序或向另一个应用程序发送数据。应用程序可以通过注册自己的 URL Scheme 来接收其他应用程序发送的数据。
例如,一个名为 My App 的应用程序可以注册一个自定义的 URL Scheme,比如 myapp://,然后其他应用程序可以使用该 URL Scheme 向 My App 发送数据。
要在应用程序中使用 URL Scheme,需要在 Info.plist 文件中添加一个 URL Types 字段,并设置 URL Schemes 属性为应用程序的自定义 URL Scheme。
<key>CFBundleURLTypes</key>
<array>
<key>CFBundleURLName</key>
<string>My App</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
</dict>
</array>
在另一个应用程序中,可以使用 UIApplication 的 openURL: 方法来打开 My App 并传递数据,例如:
UIApplication.shared.openURL(URL(string: "myapp://some-data")!)
当 My App 启动时,可以在 AppDelegate 的 application(_:open:options:) 方法中接收传递的数据。
报错 Building for iOS, but the embedded framework ‘xxx.framework‘ was built for iOS + iOS Simulator
iOS xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun