Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >两个App之间调起通信

两个App之间调起通信

作者头像
Scott_Mr
发布于 2018-05-16 08:41:57
发布于 2018-05-16 08:41:57
84100
代码可运行
举报
运行总次数:0
代码可运行

前言

经常使用一些app的分享功能,比如点击QQ分享,就从app打开(跳转到)QQ,然后分享完之后又回到我们的app,那么这是怎样实现的呢?

假设有这么一个需求,由app1跳转到app2,当app2完成任务之后,要把app2中的某些信息传到app1中(假设我们自己的程序是app1)

过程

我们创建两个新的工程,一个叫Test1,一个叫Test2。

本篇文章将使用Test1作为第一个app的URL Schemes,Test2作为第二个app的URL Schemes

Test1工程配置

由于iOS9.0之后跳转URL Schemes需要将添加白名单

对于URL Schemes中的Test1是本应用留给其他应用调用的。

Test2工程配置

对于URL Schemes中的Test2是本应用留给其他应用调用的。

Test1工程中测试代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Test2是在Test2这个项目的info.plist中配置的URL Schemes
        if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"Test2://"]]) {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"Test2://success=1&&name=test2"]];
        }
        return YES;
    }
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
        NSString *str = [[url host] stringByRemovingPercentEncoding];
        NSLog(@"%@---%@",str, url.absoluteString); 
        return YES;
    }

我们首先需要判断手机是否安装了应用Test2,通过Test2工程公开的URL Schemes来判断,即Test2://。需要传参数时,是通过URL参数来传的。如:Test2://success=1&&name=test2就是一个URL。

Test2工程中测试代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
        NSString *str = [[url host] stringByRemovingPercentEncoding];
        NSLog(@"%@---%@",str, url.absoluteString); 
        [self performSelector:@selector(goBackToApp1) withObject:nil afterDelay:2];
        return YES;
    }
    - (void)goBackToApp1 {
        if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"Test1://"]]) {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"Test1://loginSuccess=1"]];
        }
    }

我们在- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url处理来自Test1应用的调用,获取到相应的参数了。

当我们处理数据完成,需要反馈给Test1时,就需要调用通过Test1://loginSuccess=1调用回到Test1并将状态带回去。

Test1打印日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2016-06-05 23:23:09.807 test1[1277:219009] loginSuccess=1---Test1://loginSuccess=1

说明参数能从Test2正确地传递过来。

Test2打印日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2016-06-05 23:22:15.008 test2[1243:216871] success=1&&name=test2---Test2://success=1&&name=test2

说明参数能从Test1正确地传递过来。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
判断手机上是否安装某个APP(iOS)
今天项目中有一需求,判断手机上是否安装百度或高德地图,如果安装了,点击导航时选择百度,高德,或苹果地图,如果没有安装则直接苹果地图导航。
honey缘木鱼
2019/05/30
5.9K0
ios 跳转第三方App实现导航
要跳转第三方App实现导航就首先需要了解两个问题 1.怎么判断手机上是否安装了第三方导航App 2.怎么实现跳转到第三方App
赵哥窟
2018/09/13
2.6K0
ios 跳转第三方App实现导航
两个app应用之间的跳转
一,应用跳转的原理 从一个应用跳转到另一个应用,作为APP开发者,最熟悉的莫过于第三方登录,支付宝,微信支付时,那时候我们可能仅仅按照集成文档一步一步操作,在文档中配置很多类似URL Schemes
honey缘木鱼
2018/07/05
2.9K0
基础篇-应用之间的跳转
在应用A跳转到应用B,则给A、B自身自定义URL Schemes(自定义的协议头)后,通过在A中处理B的URL Schemes,就可以在A中启动B了。
進无尽
2018/09/12
9320
基础篇-应用之间的跳转
iOS开发之诱导用户为自己的App评论功能
allluckly.cn.jpg "由于我自己的App下载量少,评论也少,出于App的aso优化,想尽办法,而评论是aso里边比较重视的一块,前面的版本都没有诱导用户评论的这一功能,导致有些被动。" 由此自己简单的封装了该功能,下面我们先看看效果图: 1.png 弹出试图并没有做什么处理,就是系统的8.0以前用的UIAlertView8.0以上用的UIAlertController 具体的一些算法,都可以看代码,闲话不多说,直接贴码, 新建一个NSObject的类命名为LBToAppStore 具
Bison
2018/07/04
1.1K0
iOS开发--一步步教你彻底学会『iOS应用间相互跳转』
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-Application-jump.html 这篇文章通过一步步指导,教你彻底学会『iOS应用间相互跳转』问题。文末有Github的学习Demo。 1. 应用间相互跳转简介 在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景。这就需要我们掌握iOS应用程序之间的相互跳转知识。 下面来看看我们在开发过程中遇到的应用场景。 2.
程序员充电站
2018/05/31
1.6K0
URL Scheme
本文转自 Migrant的博客,原文:《The Complete Tutorial on iOS/iPhone Custom URL Schemes》
星宇大前端
2022/12/22
1.3K0
URL Scheme
iOS_调起各个地图软件
#pragma mark - 弹出选择地图alert + (void)popMapsAlertWithVC:(UIViewController *)vc toCoor:(CLLocationCoordinate2D)toCoor targetName:(NSString *)targetName { NSArray *mapSchemeArr = @[@"iosamap://", @"baidumap://", @"qqmap://", @"comgooglemaps://"]; NSArray *
mikimo
2022/07/20
3760
iOS 手机网站支付转Native支付(使用WKUIDelegate协议获取url)
为了节约开发成本,很多Native-H5混合App采用手机网站支付的方式去实现支付模块。但手机网站支付的网络依赖比较严重,也通常需要经过更多的验证,这种种原因导致手机网站支付的成功率比Native支付低,对商户的利益造成影响。
网罗开发
2021/01/29
6340
ios捕获异常并发送图片,便于解决bug[通俗易懂]
在开发过程中,我们有时候会留下Bug,用户在使用我们的app 的时候,有时会出现闪退,这时候我们能够让用户给我们发送邮件,以让我们开发者更加高速的地位到Bug的所在。以最快的时间解决。同一时候也提高用户体验。
全栈程序员站长
2022/07/07
2540
iOS系统关于URL Schemes的漏洞探究
    我想这个东西的设计的目的是为了方便App之间的相互调用与通讯,你可以在自己的App中使用OpenURL方法来唤起其他的App。比如微信的URL Schemes是wiexin,我们新建一个工程,实现如下代码后运行程序:
珲少
2018/08/16
2.2K0
iOS系统关于URL Schemes的漏洞探究
实践-小细节Ⅶ
所以网页的y 坐标是 0 ,但是在 iOS 11里面就是无法在 状态栏上显示,iOS11下的系统不会这样会占用 状态栏的位置
進无尽
2018/09/12
9190
实践-小细节Ⅶ
进程/线程间通信
因为线程是共享内存空间的,所以线程间通信相比于进程间通信会简单一些,线程间通信的体现
Helloted
2022/06/07
7680
进程/线程间通信
小程序,公众号,App的微信支付详解
现在我们好多开发应用几乎80%都用到了支付接口,小程序,公众号,App在微信支付上有什么相似于不同呢? 一.APP支付(https://open.weixin.qq.com) 1.项目设置APPID
honey缘木鱼
2018/06/08
4.4K0
IOS开发系列——APP间相互调用专题【整理,部分原创】
如果一个应用程序支持一些已知类型的URL,您就可以通过对应的URL模式和该程序进行通讯。然而,在大多数情况下,URL只是用于简单地启动一个应用程序并显示一些和调用方有关的信息。举例来说,对于一个用于管理地址信息的应用程序,您就可以在发送给它的URL中包含一个Maps程序可以处理的地址,以便显示相应的位置。这个级别的通讯为用户创造一个集成度高得多的环境,减少应用程序重新实现设备上其它程序已经实现的功能的必要性。
江中散人_Jun
2022/03/08
9680
(译)openURL 在 iOS10中已弃用
翻译自:openURL Deprecated in iOS10 译者:Haley_Wong
Haley_Wong
2018/08/22
2.9K0
iOS 禁止使用H5加载核心功能的解决办法
iOS 审核规则的每次变动对于iOSer来说都是一次大的震荡,今天我们针对禁用H5加载核心功能给出一种解决办法。 众所周知iOS时可用通过URL Schemes来实现App跳转传值的,不过这种方式正在被逐渐废弃(当然了支付宝依然在用,但是微信支付已经启用了Universial Link)改投更加好用的Universial Link啦。
大话swift
2020/03/26
1.3K0
iOS 禁止使用H5加载核心功能的解决办法
【IOS开发高级系列】App间跳转专题
        如果一个应用程序支持一些已知类型的URL,您就可以通过对应的URL模式和该程序进行通讯。然而,在大多数情况下,URL只是用于简单地启动一个应用程序并显示一些和调用方有关的信息。举例来说,对于一个用于管理地址信息的应用程序,您就可以在发送给它的URL中包含一个Maps程序可以处理的地址,以便显示相应的位置。这个级别的通讯为用户创造一个集成度高得多的环境,减少应用程序重新实现设备上其它程序已经实现的功能的必要性。
江中散人_Jun
2023/10/16
1K0
【IOS开发高级系列】App间跳转专题
iOS开发中支付宝支付的集成(其实很简单)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/77865207
用户1451823
2018/09/13
8170
ios应用接入微信开放平台
公众平台针对的是公众账号,除了提供管理后台之外。也开放了若干接口,让微信server和开发人员自己的应用系统可以对接
全栈程序员站长
2022/07/07
7650
相关推荐
判断手机上是否安装某个APP(iOS)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验