您现在的位置是:主页 > news > 网站建设电话/百度云资源搜索

网站建设电话/百度云资源搜索

admin2025/6/21 9:34:39news

简介网站建设电话,百度云资源搜索,网站seo如何优化,淘宝客优惠卷网站怎么做的欢迎大家关注我的公众号,我会定期分享一些我在项目中遇到问题的解决办法和一些iOS实用的技巧,现阶段主要是整理出一些基础的知识记录下来文章也会同步更新到我的博客:ppsheep.com 之前写了一篇关于APP之间跳转的文章,期间有同学说…

网站建设电话,百度云资源搜索,网站seo如何优化,淘宝客优惠卷网站怎么做的欢迎大家关注我的公众号,我会定期分享一些我在项目中遇到问题的解决办法和一些iOS实用的技巧,现阶段主要是整理出一些基础的知识记录下来文章也会同步更新到我的博客:ppsheep.com 之前写了一篇关于APP之间跳转的文章,期间有同学说…

欢迎大家关注我的公众号,我会定期分享一些我在项目中遇到问题的解决办法和一些iOS实用的技巧,现阶段主要是整理出一些基础的知识记录下来

文章也会同步更新到我的博客:
ppsheep.com

之前写了一篇关于APP之间跳转的文章,期间有同学说能否出一个类似于微信登录或者支付宝支付之类的,跳转到支付宝获得消息再调回源程序,并且带上信息。今天我们就再来聊聊,实现这样一种效果,没看过之前应用跳转的,请移步:
ppsheep.com/2016/10/27/…

之前我们说到APP之间的跳转,其实就是通过一个URL Schemes进行跳转,APP之间的传值,其实也是通过这个URL进行传值。

再有我们想跳回原来程序,那么我们还需要知道源程序的URL Schemes,这样我们才能跳回到源程序,所以在传递参数的时候 我们还需要把源程序的URL Schemes传递过去。

我们需要传递的参数:

  • 当前APP的 URL Schemes
  • 我们需要传递的实际参数

还有一个重要的事情,因为我们需要从APP2跳回APP1,所以我们还需要设置APP1的URL Schemes,怎么设置,我这里就不写出来了,具体可以看上一篇跳转解析

我们之前知道 打开另一个APP,是打开一个URL
APP2://类似于这种,那我们会想到一般我们http有一种方式携带参数 http://url?name=?&age=?

我们APP之间的传递参数方式其实也是这样的方式

  //获取APP2的URL Scheme 还需要带上当前App的APP1NSString *URLScheme = @"APP2://APP1";//我们参数需要穿name ageNSString *params = @"name=yq&age=23";//接下来加上我们需要携带的参数NSString *realURL = [NSString stringWithFormat:@"%@?%@",URLScheme,params];NSURL *appURL = [NSURL URLWithString:realURL];//判断手机中是否安装了APP2if ([[UIApplication sharedApplication] canOpenURL:appURL]) {//打开APP2ViewController2[[UIApplication sharedApplication] openURL:appURL];}else{NSLog(@"没有安装APP2");}复制代码

我们最终的appURL 是:

 APP2://APP1?name=yq&age=23复制代码

我们在APP2中处理这个跳转的URL

 -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{if ([url.absoluteString containsString:@"APP1"]){NSLog(@"%@",url);//拿到源程序的NSString * urlschemes = [[url.absoluteString componentsSeparatedByString:@"//"][1] componentsSeparatedByString:@"?"][0];//拿到参数NSRange range = [url.absoluteString rangeOfString:@"?"];NSString *paramStr = [url.absoluteString substringFromIndex:range.location+1];//去除问号NSArray *params = [paramStr componentsSeparatedByString:@"&"];NSLog(@"%@",params);//跳回源程序dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{// 延时3s模拟处理后回调指定的 URL Schemes并传递结果if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"APP2://"]]) {NSLog(@"跳转成功");[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@://back?name=back&code=200",urlschemes]]];}else{NSLog(@"跳转失败");NSLog(@"未安装应用!");}});}}复制代码

在APP2中 我们拿到了APP1传递的参数 放在了params数组中,同样的 我们在APP1中再处理从APP2跳回来的信息

  /**跳转回来*/
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{if ([url.absoluteString containsString:@"back"]) {//拿到参数NSRange range = [url.absoluteString rangeOfString:@"?"];NSString *paramStr = [url.absoluteString substringFromIndex:range.location+1];//去除问号NSArray *params = [paramStr componentsSeparatedByString:@"&"];NSLog(@"%@",params);}return YES;
}复制代码

这样我们也拿到了APP2跳回来的数据

在iOS10中跳转的API有更新,具体的变化可以看API 我这里就不列出来了

源代码放在:

github.com/yangqian111…

github.com/yangqian111…