同一家公司或者同一个集团开发的Android应用可以把数据存储在公共目录下互相访问,而iOS因为它独有的沙盒(Sandbox)机制,应用间是不可以互相访问的。iOS应用之间的通讯,可以使用universal links,它同样可以提供iOS应用和网页的通讯。
Apps & Websites 通讯
更多信息可以参考https://developer.apple.com/documentation/uikit/inter-process_communication/allowing_apps_and_websites_to_link_to_your_content?changes=latest_minor
如果你设置了相关的跳转绑定,当你点击特定链接时,系统会为你打开对应的app,如果该app没有安装,则会按链接内容定向到原来的网页。
首先在项目中配置关联的链接:
官方说明https://help.apple.com/xcode/mac/current/#/dev55e137b57
点击项目配置中的当前项目Target,选择Signing & Capabilities,选择All,+Capability,选择Associated Domains。(注意先登录开发者账号,账号绑定的developer配置中才能管理这个权限,在这里才能显示这个配置,否则选择不了)
添加的域名需要按以下格式:
<service>:<fully qualified domain>[:port number]
如果需要匹配所有子域名可以使用通配符*.
这样配置后你的应用就可以被对应域名的web应用访问了。
Server 配置
而怎么可以保证你的网页被你的应用调用同时不会被其他应用拦截,可以在服务器配置apple-app-site-association。
更多信息可以参考https://developer.apple.com/documentation/security/password_autofill/setting_up_an_app_s_associated_domains
具体做法是创建一个json文件配置以下内容,把需要交互的应用包名填进去
格式是 < Team Identifier>.< Bundle Identifier>
{
"webcredentials": {
"apps": [ "D3KQX62K1A.com.example.DemoApp",
"D3KQX62K1A.com.example.DemoAdminApp" ]
}
}
放到服务器的下列路径
1.iOS9.3之前是根目录下
https:///apple-app-site-association
2.iOS9.3之后是well-known目录
https:///.well-known/apple-app-site-association
配置文件有以下要求