(0091)iOS开发itms-services协议安装IPA安装包

有一个这样的需求:一些大厂比如:BATDS等,开发的应用很多,有些应用只是员工使用,只需要内部分发,不需要上架AppStore。那么怎么让员工通过iPhone下载尼?

这里就讲一下如何不上架AppStore 通过企业证书打包的ipa 企业分发?

首先:苹果允许用itms-services协议来直接在iphone/ipad上安装应用程序,我们可以直接生成该协议需要的相关文件,这样产品经理和测试都可以直接在设备上安装新版的应用。

1. 第一步准备:
  1. 299$的企业账号
    用于打包,只有用企业证书打包的ipa才能下载

  2. 对应的plist文件





	items
	
		
			assets
			
				
					kind
					software-package
					url
					https://bsssit.cjh.com/dtap/public/app/ios/VoiceCollection.ipa
				
				
					kind
					full-size-image
					needs-shine
					
					url
					https://bsssit.cjh.com/dtap/public/app/ios/configFile/audiopro.png
				
				
					kind
					display-image
					needs-shine
					
					url
					https://bsssit.cjh.com/dtap/public/app/ios/configFile/audiopro.png
				
			
			metadata
			
				title
				话术
				bundle-version
				1.0.0
				kind
				software
				bundle-identifier
				com.chj.VoiceCollection
			
		
	



这个我的测试过plist,注意plist 的结构,一定不能搞错(有同事搞错这个文件,害得我和后台找了2天才搞定)

software-package:url :ttps://bsssit.cjh.com/dtap/public/app/ios/VoiceCollection.ipa (你的ipa的地址)
url:logo图片的地址
bundle-identifier:com.xx.xx:(bundleID需要ipa中需要保持一致)
bundle-version:1.0.0 (CFBundleVersion需要和ipa中的保持一致)
title:话术 (随便起,用于踊跃alert确认时的提示)

(0091)iOS开发itms-services协议安装IPA安装包_第1张图片
3. IPA安装包一个

2.部署plist文件与IPA安装包

itms-services协议:

itms-services://?action=download-manifest&url=https://********/**/tue_test.plist

部署plist文件的地址必须是https,不然在iPhone设备上可能会导致“无法连接到xxx”这样的提示,导致安装失败。如果没有https服务器。可以利用开源中国(http://git.oschina.net/)提供的代码托管服务,托管一下plist文件,然后ipa的安装包和index.html依旧放在自己的服务器上.itms-services协议后面的url地址,改成在plist文件在开源中国上的url(注意url结束到.plist为止,后面的那一串参数不要带,直接手动把http改为https)。

将修改后的plist放到https 的服务、把企业证书打的ipa 上传到自己的服务器。

3.下载使用

编写一个简单的HTML页面,手机通过访问这个页面点击下载安装
比如:立即下载 的地址就是

itms-services://?action=download-manifest&url=https://.../xxx.plist



    
        
        Install
    
    
        

立即下载

  • 我们可以看到 “href=” 里面是指向了 plist 文件的地址(而不是IPA安装包的地址)
  • 最好还是使用iPhone设备自带的Safari浏览器打开该页面,点击下载。
    (0091)iOS开发itms-services协议安装IPA安装包_第2张图片
    上面是Safari 下载,在应用中更新的代码:有更新时触发下面的代码
NSString *scheme = @"itms-services://?action=download-manifest&url=https://.../xxx.plist";
[self openScheme:scheme];
- (void)openScheme:(NSString *)scheme {
    UIApplication *application = [UIApplication sharedApplication];
    NSURL *URL = [NSURL URLWithString:scheme];
    if (@available(iOS 10.0, *)) {
        [application openURL:URL options:@{} completionHandler:^(BOOL success) {
            NSLog(@"Open %@: %d",scheme,success);
        }];
    } else {
        // Fallback on earlier versions
        if ([application canOpenURL:URL]) {
            [application openURL:URL];
        }
    }
}

直接安装实例:(慧眼)

    UIApplication *application = [UIApplication sharedApplication];
    NSURL *URL = [NSURL URLWithString:@"itms-services://?action=download-manifest&url=https://oss.suning.com/sastore/snapp/upload/app_inner/ios/20190524/cc1c8baa88705aab909e571c435eef81.plist"];
    if (@available(iOS 10.0, *)) {
        [application openURL:URL options:@{} completionHandler:^(BOOL success) {
            NSLog(@"Open %@: %d",scheme,success);
        }];
    } else {
        // Fallback on earlier versions
        if ([application canOpenURL:URL]) {
            [application openURL:URL];
        }
    }

借鉴:https://www.jianshu.com/p/4eeddf929b90

你可能感兴趣的:(iOS开发笔记,ipa包如何企业分发,使用itms-services,协议来发布ipa,itms-services,协议,itms-services,分发ipa)