app唤醒另一个app ios
2016-08-15 16:23:00 weixin_33974433 阅读数 8

iOS App 唤醒另一个App

 

网上也有讲这块的,感觉讲得都不是很好。而且有一些细节根本没有讲清楚。这里重写整理一下相关知识点。

主要内容

  • URL Scheme 是什么?
  • 项目中关键的配置
  • 注意事项

URL Scheme 是什么?

iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme用于从浏览器或其他应用中启动本应用。常见的分享到第三方之间的跳转都是基于Scheme的。

通过对比网页链接来理解iOS 上的 URL Schemes,应该就容易多了。

  • URL,我们都很清楚,http://www.apple.com就是个URL,我们也叫它链接或网址;
  • Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com这个网址的Schemes是 http

根据我们上面对URL Schemes的使用,我们可以很轻易地理解,在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的 URL 来定位一个应用甚至应用里某个具体的功能。而定位这个应用的,就应该这个应用的URL 的 Schemes 部分,也就是开头儿那部分。比如短信,就是 sms:

你可以完全按照理解一个网页的 URL ——也就是它的网址——的方式来理解一个 iOS 应用的 URL,拿苹果的网站和 iOS 上的微信来做个简单对比:

  网页(苹果) iOS 应用(微信)
网站首页/打开应用 http://www.apple.com weixin://
子页面/具体功能 http://www.apple.com/mac/(Mac页面) weixin://dl/moments(朋友圈)

关于基础概念性的就讲这么多

项目中关键的配置

在项目InfoUrl Type中配置(被唤起端

Url Type,表示可以被哪些带前缀Url打开,而不是可以打开以这些前缀开头的app。

1240

  • 说明
    • URL identifier只是一个标示符,随意填写,建议写成:com.*.*反转域名的方法保证该名字的唯一性。
    • URL Scheme就是你用来通信的命令前缀,用来定位一个应用。

Plist文件中配置

1240

  • 注意:URL Schemes 是一个数组,允许应用定义多个 URL schemes。 

    接收到唤起如何处理

在代理方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation中判断唤起的来源source app,根据Url所携带的参数进行不同的操作。比如跳转到制定的页面,相关的逻辑处理等等.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
        sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
  NSLog(@"Calling Application Bundle ID: %@", sourceApplication); 
  NSLog(@"URL scheme:%@", [url scheme]); 
  NSLog(@"URL query: %@", [url query]); 

// Customer Code
  return YES; 
}

以上配置是在被唤起应用中配置的。

唤起端

一般情况下,唤起端可以直接调用appDelegate的代理方法去唤醒其他应用。

- (void)awakeOtherApp
{ 
  NSString *customURL = @"otherApp://"; 

  if ([[UIApplication sharedApplication] 
    canOpenURL:[NSURL URLWithString:customURL]]) 
  { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]]; 
  } 
  else 
  { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error" 
                          message:[NSString stringWithFormat: 
                            @"No custom URL defined for %@", customURL] 
                          delegate:self cancelButtonTitle:@"Ok" 
                          otherButtonTitles:nil]; 
    [alert show]; 
  } 
}
  • 这里需要注意一下在iOS9以后,唤起端需要配置一下

LSApplicationQueriesSchemes.iOS9之后需要,iOS9之后提高了app的安全性,需要给出一个类似白名单的东西,在白名单里面的才能打开app。不然报错: -canOpenURL: failed for URL: "OpenAppTest://mark?id=007" - error: "This app is not allowed to query for scheme OpenAppTest"

1240

注意事项

通过上面的方法可以唤醒其他的应用,简单总结下一些注意事项。

  1. URL Scheme 其实就是一个app应用的唯一标志。通过它来确定打开那个应用。
  2. 一定要分清哪些配置在哪方配置,被唤醒与唤醒。
  3. iOS9之后需要在唤起端加入LSApplicationQueriesSchemes千万不能忘。
  4. 还有一个问题还没解决,如何再次回到唤醒应用的界面。这个需要参考下官方的XCallbackURL。听说有些复杂,有空再看看。

转载于:https://my.oschina.net/fadoudou/blog/732934

2017-07-10 19:29:16 u011752619 阅读数 1171

主要内容

  • URL Scheme 是什么?
  • 项目中关键的配置
  • 注意事项

URL Scheme 是什么?

iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme用于从浏览器或其他应用中启动本应用。常见的分享到第三方之间的跳转都是基于Scheme的。

通过对比网页链接来理解iOS 上的 URL Schemes,应该就容易多了。

  • URL,我们都很清楚,http://www.apple.com就是个URL,我们也叫它链接或网址;
  • Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com这个网址的Schemes是 http

根据我们上面对URL Schemes的使用,我们可以很轻易地理解,在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的 URL 来定位一个应用甚至应用里某个具体的功能。而定位这个应用的,就应该这个应用的URL 的 Schemes 部分,也就是开头儿那部分。比如短信,就是 sms:

你可以完全按照理解一个网页的 URL ——也就是它的网址——的方式来理解一个 iOS 应用的 URL,拿苹果的网站和 iOS 上的微信来做个简单对比:

  网页(苹果) iOS 应用(微信)
网站首页/打开应用 http://www.apple.com weixin://
子页面/具体功能 http://www.apple.com/mac/(Mac页面) weixin://dl/moments(朋友圈)

关于基础概念性的就讲这么多

项目中关键的配置

在项目InfoUrl Type中配置(被唤起端

Url Type,表示可以被哪些带前缀Url打开,而不是可以打开以这些前缀开头的app。


  • 说明
    • URL identifier只是一个标示符,随意填写,建议写成:com.*.*反转域名的方法保证该名字的唯一性。
    • URL Scheme就是你用来通信的命令前缀,用来定位一个应用。

Plist文件中配置


  • 注意:URL Schemes 是一个数组,允许应用定义多个 URL schemes

    接收到唤起如何处理

在代理方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation中判断唤起的来源source app,根据Url所携带的参数进行不同的操作。比如跳转到制定的页面,相关的逻辑处理等等.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
        sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
  NSLog(@"Calling Application Bundle ID: %@", sourceApplication); 
  NSLog(@"URL scheme:%@", [url scheme]); 
  NSLog(@"URL query: %@", [url query]); 

// Customer Code
  return YES; 
}

以上配置是在被唤起应用中配置的。

唤起端

一般情况下,唤起端可以直接调用appDelegate的代理方法去唤醒其他应用。

- (void)awakeOtherApp
{ 
  NSString *customURL = @"otherApp://"; 

  if ([[UIApplication sharedApplication] 
    canOpenURL:[NSURL URLWithString:customURL]]) 
  { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]]; 
  } 
  else 
  { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error" 
                          message:[NSString stringWithFormat: 
                            @"No custom URL defined for %@", customURL] 
                          delegate:self cancelButtonTitle:@"Ok" 
                          otherButtonTitles:nil]; 
    [alert show]; 
  } 
}
  • 这里需要注意一下在iOS9以后,唤起端需要配置一下

LSApplicationQueriesSchemes.iOS9之后需要,iOS9之后提高了app的安全性,需要给出一个类似白名单的东西,在白名单里面的才能打开app。不然报错: -canOpenURL: failed for URL: "OpenAppTest://mark?id=007" - error: "This app is not allowed to query for scheme OpenAppTest"


注意事项

通过上面的方法可以唤醒其他的应用,简单总结下一些注意事项。

  1. URL Scheme 其实就是一个app应用的唯一标志。通过它来确定打开那个应用。
  2. 一定要分清哪些配置在哪方配置,被唤醒与唤醒。
  3. iOS9之后需要在唤起端加入LSApplicationQueriesSchemes千万不能忘。
2016-12-06 09:22:11 u012265444 阅读数 385

主要内容

  • URL Scheme 是什么?
  • 项目中关键的配置
  • 注意事项

URL Scheme 是什么?

iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme用于从浏览器或其他应用中启动本应用。常见的分享到第三方之间的跳转都是基于Scheme的。

通过对比网页链接来理解iOS 上的 URL Schemes,应该就容易多了。

  • URL,我们都很清楚,http://www.apple.com就是个URL,我们也叫它链接或网址;
  • Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符。比如http://www.apple.com这个网址的Schemeshttp

根据我们上面对URL Schemes的使用,我们可以很轻易地理解,在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的URL 来定位一个应用甚至应用里某个具体的功能。而定位这个应用的,就应该这个应用的URL 的 Schemes 部分,也就是开头儿那部分。比如短信,就是sms:

你可以完全按照理解一个网页的 URL ——也就是它的网址——的方式来理解一个 iOS 应用的 URL,拿苹果的网站和 iOS 上的微信来做个简单对比:

 网页(苹果)iOS 应用(微信)
网站首页/打开应用http://www.apple.comweixin://
子页面/具体功能http://www.apple.com/mac/(Mac页面)weixin://dl/moments(朋友圈)

关于基础概念性的就讲这么多

项目中关键的配置

在项目InfoUrl Type中配置(被唤起端

Url Type,表示可以被哪些带前缀Url打开,而不是可以打开以这些前缀开头的app。


  • 说明
    • URL identifier只是一个标示符,随意填写,建议写成:com.*.*反转域名的方法保证该名字的唯一性。
    • URL Scheme就是你用来通信的命令前缀,用来定位一个应用。

Plist文件中配置


  • 注意:URL Schemes 是一个数组,允许应用定义多个 URL schemes

    接收到唤起如何处理

在代理方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation中判断唤起的来源source app,根据Url所携带的参数进行不同的操作。比如跳转到制定的页面,相关的逻辑处理等等.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
        sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
  NSLog(@"Calling Application Bundle ID: %@", sourceApplication); 
  NSLog(@"URL scheme:%@", [url scheme]); 
  NSLog(@"URL query: %@", [url query]); 

// Customer Code
  return YES; 
}

以上配置是在被唤起应用中配置的。

唤起端

一般情况下,唤起端可以直接调用appDelegate的代理方法去唤醒其他应用。

- (void)awakeOtherApp
{ 
  NSString *customURL = @"otherApp://"; 

  if ([[UIApplication sharedApplication] 
    canOpenURL:[NSURL URLWithString:customURL]]) 
  { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]]; 
  } 
  else 
  { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error" 
                          message:[NSString stringWithFormat: 
                            @"No custom URL defined for %@", customURL] 
                          delegate:self cancelButtonTitle:@"Ok" 
                          otherButtonTitles:nil]; 
    [alert show]; 
  } 
}
  • 这里需要注意一下在iOS9以后,唤起端需要配置一下

LSApplicationQueriesSchemes.iOS9之后需要,iOS9之后提高了app的安全性,需要给出一个类似白名单的东西,在白名单里面的才能打开app。不然报错: -canOpenURL: failed for URL: "OpenAppTest://mark?id=007" - error: "This app is not allowed to query for scheme OpenAppTest"


注意事项

通过上面的方法可以唤醒其他的应用,简单总结下一些注意事项。

  1. URL Scheme 其实就是一个app应用的唯一标志。通过它来确定打开那个应用。
  2. 一定要分清哪些配置在哪方配置,被唤醒与唤醒。
  3. iOS9之后需要在唤起端加入LSApplicationQueriesSchemes千万不能忘。
  4. 还有一个问题还没解决,如何再次回到唤醒应用的界面。这个需要参考下官方的XCallbackURL。听说有些复杂,有空再看看。

2016-07-10 01:00:38 qq_24976099 阅读数 136

作者:纸简书生

原文链接:http://www.jianshu.com/p/7a308f5b89fc


主要内容


  • URL Scheme 是什么?

  • 项目中关键的配置

  • 注意事项


URL Scheme 是什么?


iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme用于从浏览器或其他应用中启动本应用。常见的分享到第三方之间的跳转都是基于Scheme的。


通过对比网页链接来理解iOS 上的 URL Schemes,应该就容易多了。


  • URL,我们都很清楚,http://www.apple.com就是个URL,我们也叫它链接或网址;


  • Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com这个网址的Schemes是 http。


根据我们上面对URL Schemes的使用,我们可以很轻易地理解,在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的 URL 来定位一个应用甚至应用里某个具体的功能。而定位这个应用的,就应该这个应用的URL 的 Schemes 部分,也就是开头儿那部分。比如短信,就是 sms:


你可以完全按照理解一个网页的 URL ——也就是它的网址——的方式来理解一个 iOS 应用的 URL,拿苹果的网站和 iOS 上的微信来做个简单对比



网页(苹果) iOS 应用(微信)
网站首页/打开应用 http://www.apple.com weixin://
子页面/具体功能 http://www.apple.com/mac/(Mac页面) weixin://dl/moments(朋友圈)


关于基础概念性的就讲这么多


项目中关键的配置


在项目Info的Url Type中配置(被唤起端)


Url Type,表示可以被哪些带前缀Url打开,而不是可以打开以这些前缀开头的app。



说明


  • URL identifier只是一个标示符,随意填写,建议写成:com.*.*反转域名的方法保证该名字的唯一性。


  • URL Scheme就是你用来通信的命令前缀,用来定位一个应用。


在Plist文件中配置



注意:URL Schemes 是一个数组,允许应用定义多个 URL schemes。


接收到唤起如何处理


在代理方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url

sourceApplication:(NSString *)sourceApplication annotation:(id)annotation中判断唤起的来源source app,根据Url所携带的参数进行不同的操作。比如跳转到制定的页面,相关的逻辑处理等等。


- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url

sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

NSLog(@"Calling Application Bundle ID: %@", sourceApplication);

NSLog(@"URL scheme:%@", [url scheme]);

NSLog(@"URL query: %@", [url query]);

// Customer Code

return YES;

}


以上配置是在被唤起应用中配置的。


唤起端


一般情况下,唤起端可以直接调用appDelegate的代理方法去唤醒其他应用。


- (void)awakeOtherApp

{

NSString *customURL = @"otherApp://";

if ([[UIApplication sharedApplication]

canOpenURL:[NSURL URLWithString:customURL]])

{

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];

}

else

{

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error"

message:[NSString stringWithFormat:

@"No custom URL defined for %@", customURL]

delegate:self cancelButtonTitle:@"Ok"

otherButtonTitles:nil];

[alert show];

}

}


这里需要注意一下在iOS9以后,唤起端需要配置一下


LSApplicationQueriesSchemes.iOS9之后需要,iOS9之后提高了app的安全性,需要给出一个类似白名单的东西,在白名单里面的才能打开app。不然报错: -canOpenURL: failed for URL: "OpenAppTest://mark?id=007" - error: "This app is not allowed to query for scheme OpenAppTest"



注意事项


通过上面的方法可以唤醒其他的应用,简单总结下一些注意事项。


  1. URL Scheme 其实就是一个app应用的唯一标志。通过它来确定打开那个应用。


  2. 一定要分清哪些配置在哪方配置,被唤醒与唤醒。


  3. iOS9之后需要在唤起端加入LSApplicationQueriesSchemes千万不能忘。

2016-07-07 08:58:00 weixin_34278190 阅读数 8

网上也有讲这块的,感觉讲得都不是很好。而且有一些细节根本没有讲清楚。这里重写整理一下相关知识点。

主要内容

  • URL Scheme 是什么?
  • 项目中关键的配置
  • 注意事项

URL Scheme 是什么?

iOS有个特性就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme用于从浏览器或其他应用中启动本应用。常见的分享到第三方之间的跳转都是基于Scheme的。

通过对比网页链接来理解iOS 上的 URL Schemes,应该就容易多了。

  • URL,我们都很清楚,http://www.apple.com就是个URL,我们也叫它链接或网址;
  • Schemes,表示的是一个 URL 中的一个位置——最初始的位置,即 ://之前的那段字符。比如 http://www.apple.com这个网址的Schemeshttp

根据我们上面对URL Schemes的使用,我们可以很轻易地理解,在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的 URL 来定位一个应用甚至应用里某个具体的功能。而定位这个应用的,就应该这个应用的URL 的 Schemes 部分,也就是开头儿那部分。比如短信,就是 sms:

你可以完全按照理解一个网页的 URL ——也就是它的网址——的方式来理解一个 iOS 应用的 URL,拿苹果的网站和 iOS 上的微信来做个简单对比:

 网页(苹果)iOS 应用(微信)
网站首页/打开应用 http://www.apple.com weixin://
子页面/具体功能 http://www.apple.com/mac/(Mac页面) weixin://dl/moments(朋友圈)

关于基础概念性的就讲这么多

项目中关键的配置

在项目InfoUrl Type中配置(被唤起端

Url Type,表示可以被哪些带前缀Url打开,而不是可以打开以这些前缀开头的app。


 
  • 说明
    • URL identifier只是一个标示符,随意填写,建议写成:com.*.*反转域名的方法保证该名字的唯一性。
    • URL Scheme就是你用来通信的命令前缀,用来定位一个应用。

Plist文件中配置


 
  • 注意:URL Schemes 是一个数组,允许应用定义多个 URL schemes

    接收到唤起如何处理

在代理方法- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation中判断唤起的来源source app,根据Url所携带的参数进行不同的操作。比如跳转到制定的页面,相关的逻辑处理等等.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
        sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
  NSLog(@"Calling Application Bundle ID: %@", sourceApplication); 
  NSLog(@"URL scheme:%@", [url scheme]); 
  NSLog(@"URL query: %@", [url query]); 

// Customer Code
  return YES; 
}

以上配置是在被唤起应用中配置的。

唤起端

一般情况下,唤起端可以直接调用appDelegate的代理方法去唤醒其他应用。

- (void)awakeOtherApp
{ 
  NSString *customURL = @"otherApp://"; 

  if ([[UIApplication sharedApplication] 
    canOpenURL:[NSURL URLWithString:customURL]]) 
  { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]]; 
  } 
  else 
  { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error" 
                          message:[NSString stringWithFormat: 
                            @"No custom URL defined for %@", customURL] 
                          delegate:self cancelButtonTitle:@"Ok" 
                          otherButtonTitles:nil]; 
    [alert show]; 
  } 
}
  • 这里需要注意一下在iOS9以后,唤起端需要配置一下

LSApplicationQueriesSchemes.iOS9之后需要,iOS9之后提高了app的安全性,需要给出一个类似白名单的东西,在白名单里面的才能打开app。不然报错: -canOpenURL: failed for URL: "OpenAppTest://mark?id=007" - error: "This app is not allowed to query for scheme OpenAppTest"


 

注意事项

通过上面的方法可以唤醒其他的应用,简单总结下一些注意事项。

  1. URL Scheme 其实就是一个app应用的唯一标志。通过它来确定打开那个应用。
  2. 一定要分清哪些配置在哪方配置,被唤醒与唤醒。
  3. iOS9之后需要在唤起端加入LSApplicationQueriesSchemes千万不能忘。
  4. 还有一个问题还没解决,如何再次回到唤醒应用的界面。这个需要参考下官方的XCallbackURL。听说有些复杂,有空再看看。



文/纸简书生(简书作者)
原文链接:http://www.jianshu.com/p/7a308f5b89fc
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

参考链接:iOSApp唤醒另一个App

博文 来自: u012322734
没有更多推荐了,返回首页