V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brwzsy0733
V2EX  ›  Apple

ipa 文件存在哪可以实现在线安装?

  •  
  •   brwzsy0733 · 299 天前 · 2616 次点击
    这是一个创建于 299 天前的主题,其中的信息可能已经有所发展或是发生改变。

    苹果文件安装包,不管我存在网盘还是 FTP 服务器,它都是提示“下载” , 怎么让文件地址用 Safari 打开就是在线安装文件呢?

    20 条回复    2023-07-05 18:01:33 +08:00
    estk
        1
    estk  
       299 天前 via iPhone
    又不是安卓,想多了
    Wudilalala
        2
    Wudilalala  
       299 天前 via Android
    alist 呀
    ybz
        3
    ybz  
       299 天前
    如果你的 ipa 已经砸壳,重签。那么可以上传蒲公英安装。
    yekern
        4
    yekern  
       299 天前
    存蒲公英
    brwzsy0733
        5
    brwzsy0733  
    OP
       299 天前
    @Wudilalala alist 试过了,不行。。。。
    bsulike
        6
    bsulike  
       299 天前
    蓝奏云也可以,但是有文件大小的限制
    cat
        7
    cat  
       299 天前
    加个 plist 文件就行,之前有人发过,研究了一下,挺简单的
    ijasonme
        8
    ijasonme  
       299 天前
    试试一些内测分发平台?
    kkeybbs
        9
    kkeybbs  
       299 天前 via iPhone
    企业证书签名,然后 plist
    ETiV
        10
    ETiV  
       299 天前 via iPhone
    企业证书+1
    Apple 官网有介绍具体怎么实现
    bao3
        11
    bao3  
       299 天前
    借楼问一下,个人开发者证书签名过,对方的设备 UDID 也加在名单里,那可以让对方直接在线安装嘛
    wliansheng
        12
    wliansheng  
       299 天前
    我司用的是 plist
    hohoho
        13
    hohoho  
       299 天前   ❤️ 1
    @bao3 可以。

    1 、提供一个网页,网页上的下载是一个链接,类似:itms-services://?action=download-manifest&url=https://your.web.com/YourApp.plist

    注意:plist 文件必须是 https

    2 、plist 里的内容:

    ```xml
    <?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://your.web.com/YourApp.ipa</string>
    </dict>
    </array>
    <key>metadata</key>
    <dict>
    <key>bundle-identifier</key>
    <string>com.YourApp.BundleId</string>
    <key>bundle-version</key>
    <string>1.0.0</string>
    <key>kind</key>
    <string>software</string>
    <key>title</key>
    <string>YourAppName</string>
    </dict>
    </dict>
    </array>
    </dict>
    </plist>
    ```
    HeMinWon
        14
    HeMinWon  
       299 天前
    apple configurator
    dusycool
        15
    dusycool  
       299 天前 via iPhone
    bao3
        16
    bao3  
       298 天前
    @hohoho 太感谢了~~~很详细。
    13927131347
        17
    13927131347  
       298 天前 via iPhone
    @hohoho 此方法我在用,我在想这个.plist 中的连接可否实现 get 参数形式,比如 index.php?id=1 的时候引用.plist 的地址链接路径为 1.ipa ,index.php?id=2 的时候引用.plist 的地址链接路径为 2.ipa ,这样不用每次新增安装的 ipa 而创建一个文档
    hohoho
        18
    hohoho  
       298 天前 via iPhone
    @13927131347 可以的。不知道苹果是否限制 plist 后缀,最好用 param 形式 /index/:plistId/app.plist 。服务端放一个 plist 模版,根据 plistId 生成不同内容的文件 response 。
    13927131347
        19
    13927131347  
       297 天前 via iPhone
    @hohoho 如你上面提到的<key>url</key>
    <string>http://your.web.com/YourApp.ipa</string>
    这是 plist 文件中的 ipa 链接,但这连接是固定的,并不会变,需改成动态参数连接该如何写
    hohoho
        20
    hohoho  
       296 天前
    @13927131347

    plist 模版里面有两个动态数据:bundleId 和 downloadUrl

    <string>{{bundleId}}</string>
    <string>{{downloadUrl}}</string>

    方案一:query 参数带进去 bundleId=encodeURIComponent(your.bundle.id)&downloadUrl=encodeURIComponent( http://your.web.com/your.ipa)

    方案二:在后端代码里写好 plistId 映射

    如:const map = { 'your-plistId-1' : { bundleId: '....', downloadUrl: '....' }}

    通过这两个方案取出来 bundleId 和 downloadUrl 替换 plist 模版,然后在 response 里面把新生成的 plist 字符串写进去。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3019 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:21 · PVG 16:21 · LAX 01:21 · JFK 04:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.