Iphone 以编程方式点击HTML href以更新应用程序

Iphone 以编程方式点击HTML href以更新应用程序,iphone,ios,ipad,adhoc,Iphone,Ios,Ipad,Adhoc,我正在计划一个带有临时分发的企业应用程序的更新 对于更新,苹果建议用户访问HTML页面并点击链接: href="itms-services://?action=download-manifest&url=http://example.com/
manifest.plist" 看 我不想这样做。我希望应用程序在启动时以编程方式检查更新,并使用UIAlertView提醒用户更新可用 以下是我到目前为止在application didFinishLaunching中得到的信息。复杂的plis

我正在计划一个带有临时分发的企业应用程序的更新

对于更新,苹果建议用户访问HTML页面并点击链接:

href="itms-services://?action=download-manifest&url=http://example.com/
manifest.plist"

我不想这样做。我希望应用程序在启动时以编程方式检查更新,并使用UIAlertView提醒用户更新可用

以下是我到目前为止在application didFinishLaunching中得到的信息。复杂的plist解析来自以下示例plist的结构:

然后我有了UIAlertView委托方法:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1) {
        NSLog(@"downloading full update");
        UIWebView *webView = [[UIWebView alloc] init];
        [webView loadRequest:[[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"itms-services://?action=download-manifest&url=http://example.com/MyApp.plist"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]];
    }
}
有几件事:

  • 我知道不应该在应用程序didfish中调用[alert show],但我稍后会更改它
  • 我不知道plistData的下载速度有多快,以及下载对应用程序的影响
  • 更重要的是,我的alert view委托方法不起作用,更新也无法下载。即使我使用@property(非原子,强)UIWebView*webView引入webView,该方法也不会做任何事情
  • 我认为Dropbox已经正确配置了MIME,因为我可以通过google Chrome下载.ipa

所以我真正需要的是一种方法,使用NSURLConnection(NSURLRequest等)来复制用户点击HTML href的行为。之后,我认为将进行完整更新。

您可以使用

[[UIApplication sharedApplication] openURL:...];

我不知道它是否适用于itms服务:URL,但它适用于其他定制的URL方案,如tel:、fb:等。所以它应该适用,除非苹果专门阻止它。

苹果似乎已经开始以这种方式阻止使用itms服务。幸运的是,用户仍然可以被要求点击一个涉及itms服务的href链接。我在应用程序中打开itms服务url也没有成功。我猜这只是意味着用户需要额外点击几下才能找到并按下网页上的下载按钮。不知道为什么他们会阻止这件事,如果它可以从网页上完成的话。这在模拟器中似乎不起作用,但在真正的设备上是可以的。让我困惑了一会儿。@JustinCaldicott这是因为模拟器上没有App Store.App。@JustinCaldicott实际上很抱歉,这不是原因(itms apps://没有通过App Store)。这可能只是因为您无法在模拟器上安装特别构建(它们是为ARM而不是x86构建的,并且具有错误的配置类型)。
[[UIApplication sharedApplication] openURL:...];