2015-12-29 2 views
0

Я программно загружаю файл ipa (корпоративная версия моего приложения) и предлагаю пользователю его установить.Установите программно загруженный ipa на устройстве iOS

Проблема аналогична Download and install an ipa from url on iOS, но разница в том, что ipa уже загружен в моем случае.

Я попробовал следующий вариант для решения вышеуказанной проблемы в:

  • Изменить PLIST содержит URL для локального загруженного ипа.

`` `

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>items</key> 
    <array> 
     <dict> 
      <key>assets</key> 
      <array> 
       <dict> 
        <key>kind</key> 
        <string>software-package</string> 
        <key>url</key> 
        <string>file://{path-to-local-ipa}</string> 
       </dict> 
      </array> 
      <key>metadata</key> 
      <dict> 
       <key>bundle-identifier</key> 
       <string>com.yourCompany.productName</string> 
       <key>bundle-version</key> 
       <string>1</string> 
       <key>kind</key> 
       <string>software</string> 
       <key>title</key> 
       <string>productName</string> 
      </dict> 
     </dict> 
    </array> 
</dict> 
</plist> 

` ``

  • Update ITMS ссылка, чтобы указать на локально обновленный Plist файл - itms-services://?action=download-manifest&url=file://{path-to-local-plist}

Но, при открытии ITMS ссылка с помощью [[UIApplication sharedApplication] openURL:itmsLink] не работает и дает мне сообщение об ошибке Cannot install applications because the certificate for (null) is not valid

Это ссылка на то, как Facebook распространяет свое внутреннее приложение для dogfooding. Хотите сделать что-то подобное, чтобы пользователю было предложено установить приложение после загрузки приложения, тем самым увеличивая скорость его установки.

+0

Почему бы просто не загружать свой двоичный файл в App Store и не позволять ему заниматься распространением приложений? – DDPWNAGE

+0

Это касается досуга внутренней версии приложения - [facebook-dogfooding] (https://www.youtube.com/watch?v=Nffzkkdq7GM&feature=youtu.be&t=39m25s). Версия дистрибутива приложения уже присутствует в AppStore. – raviagarwal7

ответ

0

Сначала необходимо проверить свои сертификаты и идентификатор пакета. Сообщение об ошибке дает достаточно информации, вы видите, что существует «null», что означает, что ваше приложение не имеет идентификатор пакета? Проверьте идентификатор пакета приложения, настройки сертификата, параметры файла настройки, чтобы убедиться, что они совпадают друг с другом.

Одна вещь, которую вы можете попробовать проверить, это открыть Xcode-Window-Devices, выбрать устройство iPhone, которое подключено к вашему macbook, и перетащить ipa, который вы просто заархивировали в область приложений, чтобы узнать, может ли она быть установленным. Если это возможно, проверьте идентификатор пакета URL-адреса, который будет таким же, как ваше приложение. Тебе должно быть хорошо.

Мы делаем похожие вещи, подобные вашим. Мы также распространяем наше приложение через собственный дистрибутив.

Мы проверим, есть ли версия, мы выберем UIAlertView и попросим пользователя обновить. Пользователь может нажать кнопку «ОК», и он начнет загрузку и установку автоматически.

код ОК Баттона, как это:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (alertView == updateAlert){ 
     if (buttonIndex == 1 || _forceUpdate) { 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:Download_URL]]; 
     } 
    } 
} 

Где DOWNLOAD_URL может быть в вашем случае itms-services://?action=download-manifest&url=file://{path-to-local-plist}.

Смежные вопросы