2012-06-28 5 views
5

기기의 파일 시스템에있는 plist에서 iOS 앱을 설치하려고합니다.로컬 plist (null)에서 iOS 앱을 설치하려고합니다.

NSString *launchNewPlistURL = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=file://%@",[self saveFilePath]]; 
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:launchNewPlistURL]]; 

"(null) {myappname}을 (를) 설치하려고합니다."라는 메시지가 표시됩니다. 보통 (null)은 plist가 오는 도메인 이름이지만,이 경우 로컬 파일이므로 null입니다.

어쨌든 plist에 제목을 지정하거나 URL에 가짜 도메인 이름을 전달합니까?

감사합니다, 댄

답변

3

당신은 HTTP 로컬 서버를 만드는 프로젝트 MongooseDaemon를 사용할 수 있습니다.

도메인을 비슷한 것으로 설치하려면 http://192.168.xxx.xxx/yourplist.plist을 설치하십시오.

어쨌든, 큰 IPA에서는 사용할 수 없다고 생각합니다. IPA를 15MB 이상으로 시도 했으므로 설치를 시작하는 속도가 매우 느립니다.

+0

파일 크기는 큰 문제가 아니어야합니다. plong 만 MongooseDaemon에 의해 호스팅되어야하고 IPA는 웹의 다른 곳에서도 계속 살 수 있습니다. – fischerdan

2

나는 유사한 상황에 처해 있었지만 원래는 몽구스를 사용하는 경로를 따라 갔지만 오늘은 CocoaHttpServer을 우연히 만났다.

몽구스를 사용하면 로컬 plist/IPA 파일을 처리하는 데 약 20 %의 성공률을 보였습니다. 경우에 따라 localhost would like to install 대화 상자가 나타나지 않는 경우가 있는데, 때로는 설치가 시작되고 실패 할 수도 있으며, 실제로는 실제로 작동했습니다. 더 나쁜 것은 일단 앱이 실패하면 완전히 제거하고 다시 설치해야하므로 모든 데이터가 손실됩니다. 실패한 설치를 성공적으로 "수정"할 수 없었습니다.

지금까지 약 10-15 분간의 테스트만으로도 CocoaHttpServer는 아직 실패하지 않았습니다. 나는 이것이 아주 작은 표본 크기라는 것을 알고 있지만, 나의 몽구스 성공률은 약 10 %입니다.

self.httpServer = [[HTTPServer alloc] init]; 
[self.httpServer setType:@"_http._tcp."]; 
[self.httpServer setPort:8080]; 
//This is just a path where I save my IPA and Plist file locally. 
//In my case it's /{NSDocumentDirectory}/install/ 
[self.httpServer setDocumentRoot:[self pathForLocalInstallFiles]]; 

그런 다음 디스크에 PLIST에 URL 다음 PLIST 내부

NSURL *plistUrl = [NSURL URLWithString:@"itms-services://?action=download-manifest&url=http://localhost:8080/appname.plist"]; 
[[UIApplication sharedApplication] openURL:plistUrl]; 

, 로컬 IPA 파일을 가리키는 URL을 가지고, 나는 file:// 또는 http://localhost/를 사용하여 성공을 거두었 다.