iOS itms-services url scheme

2023-10-29 15:20
文章标签 ios url services scheme itms

本文主要是介绍iOS itms-services url scheme,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iOS使用itms-services协议来分发开发者打的ipa安装包,主要是企业开发账号分发及非企业开发账号测试阶段分发给测试人员的安装包。(蒲公英、fir.im 正是使用这个协议来分发安装包的)

现在需要准备以下所需要的材料
ipa安装包、plist文件、及一个网页材料

ipa安装包
这里的ipa安装包是通过公司开发者账号打包的,需要设备被加入到开发者账号中才能正常安装使用,这里就不多说啦。

plist文件配置
配置文件中主要需要修改的是安装包地址urlbundle-identifierbundle-version

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>items</key><array><dict><key>assets</key><array><dict><key>kind</key><string>software-package</string><key>url</key><!--         !!!安装包地址           --><string>https://tengfenglian.github.io/InstallIpa/PushDemo.ipa</string></dict><dict><key>kind</key><string>display-image</string><key>needs-shine</key><true/><key>url</key><string>http://img3.100bt.com/upload/ttq/20140523/1400836956582_middle.jpg</string></dict><dict><key>kind</key><string>full-size-image</string><key>needs-shine</key><true/><key>url</key><string>http://img3.100bt.com/upload/ttq/20140523/1400836956582_middle.jpg</string></dict></array><key>metadata</key><dict><key>bundle-identifier</key><!--         bundle identifier           --><string>com.ltf.PushDemo</string><key>bundle-version</key><!--         bundle version           --><string>1.0</string><key>kind</key><string>software</string><key>subtitle</key><string>Install App Subtitle</string><key>title</key><string>Install App Title</string></dict></dict></array>
</dict>
</plist>

html页面
使用 itms-services://?action=download-manifest&url= + plist文件的地址 实现安装包的加载,plist文件的地址必须是https;
在Safari浏览器中加载下面网页响应跳转会有安装提示

<meta name="viewport" content="initial-scale=1.0"/>
<!DOCTYPE html>
<html lang="en">
<head><meta name='apple-itunes-app' content='app-id=477927812; text/html; charset=utf-8' http-equiv="Content-Type"><title>安装App</title>
</head>
<body>
<!--  itms-services://?action=download-manifest&url= + plist文件的地址  --><a href='itms-services://?action=download-manifest&url=https://tengfenglian.github.io/InstallIpa/load.plist'>一键安装</a>
</body>
</html>

在使用WKWebView中加载该网页响应跳转时需要拦截这个itms-services url scheme 并打开就会有安装提示

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {NSURLRequest *request = navigationAction.request;NSURL *url = navigationAction.request.URL;NSString *scheme = [url scheme];if ([scheme isEqualToString:@"itms-services"]) {if (@available(iOS 10.0, *)) {[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];} else {[[UIApplication sharedApplication] openURL:url];}decisionHandler(WKNavigationActionPolicyCancel);return;}decisionHandler(WKNavigationActionPolicyAllow);
}

效果图

这里我使用GitHub来保存上面的材料,在GitHub中创建项目并提交以上三个文件,链接配置查看这篇文章。

这篇关于iOS itms-services url scheme的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301535

相关文章

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

使用http-request 属性替代action绑定上传URL

在 Element UI 的 <el-upload> 组件中,如果你需要为上传的 HTTP 请求添加自定义的请求头(例如,为了通过身份验证或满足服务器端的特定要求),你不能直接在 <el-upload> 组件的属性中设置这些请求头。但是,你可以通过 http-request 属性来自定义上传的行为,包括设置请求头。 http-request 属性允许你完全控制上传的行为,包括如何构建请求、发送请

iOS剪贴板同步到Windows剪贴板(无需安装软件的方案)

摘要 剪贴板同步能够提高很多的效率,免去复制、发送、复制、粘贴的步骤,只需要在手机上复制,就可以直接在电脑上 ctrl+v 粘贴,这方面在 Apple 设备中是做的非常好的,Apple 设备之间的剪贴板同步功能(Universal Clipboard)确实非常方便,它可以在 iPhone、iPad 和 Mac 之间无缝传输剪贴板内容,从而大大提高工作效率。 但是,iPhone 如何和 Wind

url参数中带有号,需要用先把url做个解析,使其方便在网络上传递

需求:提交异步通知地址给宝付的投标接口,发现投标成功后,异步通知地址没有被调用 排查:通过和宝付技术对接,发现是203,地址重定向错误。深入排查,发现异步通知返回的地址中&号之后的参数宝付没有收到 结论:表单提交的参数中的异步通知地址中的&号没有做urlencode()处理导致传递丢失参数。 地址参数中带有&号,java在做提交的时候,不能正确传递&,导致地址中&之后的内容丢失。故此需要ur

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity

我的第一次份实习工作-iOS实习生-第三个月

第三个月 这个月有一个考核项目,是一个电子书阅读器,组长说很重要,是我的实习考核项目。 我的项目XTReader,这是我参考网上的一些代码,和模仿咪咕阅读做的,功能还不完善,数据的部分是用聚合数据做的。要收费的。   还有阅读页面,基本功能实现了一下。使用了autolayout,自适应布局,也是第一次用网络,第一次用数据库,第一次用自动布局。还有很多不足。 做了一周多,有个问题一直没

我的第一次份实习工作-iOS实习生-公司使用过的软件

bittorrentsync 素材,文件同步软件 cornerstone svn 软件开发合作 mark man 测量坐标的软件 SQLLite Manager 数据库操作软件

我的第一次份实习工作-iOS实习生-第二个月

第二个月 来公司过了一个月了。每天早上9点上班,到晚上6.30下班,上下班要指纹打卡,第一个月忘了打卡好多次(),然后还要去补打卡单。公司这边还安排了,工资卡办理,招商银行卡。开了一次新员工大会,认识了公司的一些过往,公司的要求等,还加了一下公司的企业QQ,还有其他的羽毛球群,篮球群。我加了下羽毛球群,也去打了一两次。第二个月的感受,感觉跟组里面的交流跟沟通都好少,基本上还有好多人不认识。想想也