2012-06-28 18 views
5

Tôi đang cố gắng cài đặt ứng dụng iOS từ plist trên hệ thống tệp của thiết bị.Cài đặt các ứng dụng iOS từ một plist cục bộ (null) muốn cài đặt

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

Và tôi được nhắc với "(null) muốn cài đặt {myappname}". Thông thường (null) là tên miền plist là đến từ, nhưng trong trường hợp này nó là null vì nó là một tập tin địa phương.

Có cách nào để chỉ định tiêu đề trong danh sách hoặc chuyển tên miền giả trong url?

Cảm ơn, Dan

Trả lời

3

Bạn có thể sử dụng các dự án MongooseDaemon để tạo ra một máy chủ HTTP địa phương.

Có miền tương tự: http://192.168.xxx.xxx/yourplist.plist để cài đặt.

Nhưng dù sao, tôi nghĩ bạn không thể sử dụng nó với IPA lớn. Tôi đã thử với IPA của tôi lớn hơn 15MB và rất, rất chậm để bắt đầu cài đặt.

+0

Kích thước tệp không phải là vấn đề lớn, vì chỉ có plist sẽ cần được lưu trữ bởi MongooseDaemon và IPA vẫn có thể tồn tại ở nơi khác trên web. – fischerdan

2

Tôi đã ở trong một tình huống tương tự, và đã đi qua các tuyến đường sử dụng Mongoose ban đầu, nhưng chỉ ngày hôm nay stumbled khi CocoaHttpServer.

Với Mongoose, tôi chỉ nhận được khoảng 20% ​​tỷ lệ thành công phục vụ tệp plist/IPA cục bộ. Đôi khi hộp thoại localhost would like to install không bao giờ xuất hiện, đôi khi cài đặt bắt đầu và không thành công khoảng nửa chừng và đôi khi nó thực sự hoạt động. Thậm chí tệ hơn, một khi một ứng dụng không thành công, tôi đã phải gỡ bỏ hoàn toàn và cài đặt lại nó, vì vậy tất cả dữ liệu đã bị mất. Tôi đã không bao giờ có thể thành công "sửa chữa" một cài đặt không thành công.

Cho đến nay, chỉ với khoảng 10-15 phút thử nghiệm, CocoaHttpServer chưa thất bại. Tôi biết đây là một cỡ mẫu rất nhỏ, nhưng tỷ lệ thành công Mongoose của tôi là khoảng 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]]; 

Sau đó URL vào plist trên đĩa:

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

Bên trong plist, nơi bạn có URL của bạn trỏ đến file IPA địa phương, tôi đã thành công bằng cách sử dụng file:// hoặc http://localhost/.