【轉】Java生成plist下載ipa文件


我們在上傳ipa想要安裝的時候必須要通過plist文件去下載,並且還要遵循 itms-services協議。 
意思就是,第一步我們要生成一個plist文件, 
第二步生成一個html文件,用來指向plist文件 

下面是生成plist文件

<?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>http://127.0.0.1/project/upload/files/20160504201048174_7836_19.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>cn.vrv.im-inhouse</string> <key>bundle-version</key> <string>1.0.7</string> <key>kind</key> <string>software</string> <key>subtitle</key> <string>下載</string> <key>title</key> <string></string> </dict> </dict> </array> </dict> </plist>

上面重要的地方有兩點

  1. url:這個參數是為了找到你自己上傳的ipa文件;
  2. bundle-identifier:這個參數是開發者賬號用戶名,可以為空或任意,區別在於安裝的過程中有無圖標和進度

下面是生成html文件,通過html的方式下載這個ipa文件。

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>下載</title> <script type="text/javascript"> var url = 'http://127.0.0.1:80//upload/plists/20160606143426371_63551_1.plist'; window.location.href = "itms-services://?action=download-manifest&url=" + url; </script> </head> <body></body> </html>

這樣只要我們只要訪問這個html地址,就可以自動下載ipa文件了。 
注意:訪問這個html文件的時候必須是基於HTTPS的,所以這就需要有一台https服務器 
所以我們只要按照上面的格式,把plist文件,和html文件生成好,就可以安裝了。

下面通過寫文件的方式生成,請看代碼

import java.io.File;
import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; /** * * @author ZSL * */ public class CreateUtil { public static String createPlist() throws IOException{ System.out.println("==========開始創建plist文件"); //這個地址應該是創建的服務器地址,在這里用生成到本地磁盤地址 final String path = "D:/upload/plists/"; File file = new File(path); if (!file.exists()) { file.mkdirs(); } String plistFile = "a.plist"; final String PLIST_PATH = path + plistFile; file = new File(PLIST_PATH); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } String plist = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n" + "<plist version=\"1.0\">\n" + "<dict>\n" + "<key>items</key>\n" + "<array>\n" + "<dict>\n" + "<key>assets</key>\n" + "<array>\n" + "<dict>\n" + "<key>kind</key>\n" + "<string>software-package</string>\n" + "<key>url</key>\n" //你之前所上傳的ipa文件路徑 + "<string>http://127.0.0.1/project/upload/files/20160504201048174_7836_19.ipa</string>\n" + "</dict>\n" + "</array>\n" + "<key>metadata</key>\n" + "<dict>\n" + "<key>bundle-identifier</key>\n" //這個是開發者賬號用戶名,也可以為空,為空安裝時看不到圖標,完成之后可以看到 + "<string>cn.vrv.im-inhouse</string>\n" + "<key>bundle-version</key>\n" + "<string>1.0.7</string>\n" + "<key>kind</key>\n" + "<string>software</string>\n" + "<key>subtitle</key>\n" + "<string>下載</string>\n" + "<key>title</key>\n" + "<string></string>\n" + "</dict>\n" + "</dict>\n" + "</array>\n" + "</dict>\n" + "</plist>"; try { FileOutputStream output = new FileOutputStream(file); OutputStreamWriter writer; writer = new OutputStreamWriter(output, "UTF-8"); writer.write(plist); writer.close(); output.close(); } catch (Exception e) { System.err.println("==========創建plist文件異常:" + e.getMessage()); } System.out.println("==========成功創建plist文件"); return PLIST_PATH; } public static String createHtml(String plistPath) { System.out.println("==========開始創建html文件"); //這個地址應該是生成的服務器地址,在這里用生成到本地磁盤地址 final String path = "D:/upload/htmls/"; File file = new File(path); if (!file.exists()) { file.mkdirs(); } String plistFile = "a.plist"; final String PLIST_PATH = path + plistFile; file = new File(PLIST_PATH); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } String html = "<!DOCTYPE html>\n" + "<html lang=\"en\">\n" + "<head>\n" + "<meta charset=\"UTF-8\">\n" + "<title>下載</title>\n" + "<script type=\"text/javascript\">\n" + "var url = '" + plistPath + "';\n" + "window.location.href = \"itms-services://?action=download-manifest&url=\" + url;\n" + "</script>\n" + "</head>\n" + "<body></body>\n" + "</html>"; try { FileOutputStream output = new FileOutputStream(file); OutputStreamWriter writer = new OutputStreamWriter(output, "UTF-8"); writer.write(html); writer.close(); output.close(); } catch (IOException e) { System.err.println("==========創建html文件異常:" + e.getMessage()); } System.out.print("==========成功創建html文件"); return "success"; } public static void main(String[] args) throws IOException { String plistPath = CreateUtil.createPlist(); createHtml(plistPath); }

直接運行main函數就可以生成這兩個文件。

原文出自:http://www.voidcn.com/blog/moyanxuan_1993_2_24/article/p-6025867.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM