如何将 installUrl 转换为可以直接安装的链接?

第一步:用 URLencodeString 方法转译

用 URLencodeString 方法将获取到的 installUrl 转译为 https://fir.im/plists/yourplistid 的格式。

第二步:使用 itms-services 协议

将第一步获取到的 url 拼接到 itms-services://?action=download-manifest&url=的后面

代码示例:

NSString * urlString = @"https://download.fir.im/v2/app/install/your_app_id?download_token=your_download_token";  
NSString *URLencodeString = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlString, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));  
NSString *installURL = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=%@", URLencodeString];  
NSURL *openURL = [NSURL URLWithString:installURL];  
[[UIApplication sharedApplication] openURL:openURL];

注意:以上方法为内存管理方式为 ARC 的转换方法,如果内存管理方式为 MRC,需要在上面示例中的

CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlString, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));  

替换为:

[NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlString, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))) autorelease];

Sarah

fir.im & BugHD 的产品经理 :)

北京