uni-app ipa包中的PrivacyInfo.xcprivacy文件未包含xcframework中的key

uni-app ipa包中的PrivacyInfo.xcprivacy文件未包含xcframework中的key

操作步骤:

  • xcframework中存在PrivacyInfo.xcprivacy文件 然后直接点击云打包

预期结果:

  • ipa包中存在xcframework中的PrivacyInfo.xcprivacy文件

实际结果:

  • ipa包中的PrivacyInfo.xcprivacy文件没有包含xcframework中的key

bug描述:

  • xcframework里面的PrivacyInfo.xcprivacy云打包的时候没有合并到ipa中
  • 只有ios文件下的PrivacyInfo.xcprivacy打包后才在ipa中存在


| 项目信息          | 详情                   |
|-------------------|------------------------|
| 产品分类          | uniapp/App             |
| PC开发环境操作系统 | Mac                    |
| PC开发环境操作系统版本号 | 14.0               |
| HBuilderX类型     | 正式                   |
| HBuilderX版本号   | 4.08                   |
| 手机系统          | iOS                    |
| 手机系统版本号     | iOS 15                 |
| 手机厂商          | 苹果                   |
| 手机机型          | 13pm                   |
| 页面类型          | vue                    |
| vue版本           | vue2                   |
| 打包方式          | 云端                   |
| 项目创建方式      | HBuilderX              |

更多关于uni-app ipa包中的PrivacyInfo.xcprivacy文件未包含xcframework中的key的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

这个有什么问题么 你可以用原生xcode导出试一下 ipa包中的PrivacyInfo.xcprivacy只是app的 不会包含静态xcframework的

更多关于uni-app ipa包中的PrivacyInfo.xcprivacy文件未包含xcframework中的key的实战教程也可以访问 https://www.itying.com/category-93-b0.html


文档中这里提到【原生语言插件及UTS插件作者应该根据根据插件的实际情况配置好隐私清单,避免插件使用者手动补充隐私清单,配置后云端打包会自动合并处理隐私清单。插件依赖的 xcframework 格式SDK库涉及的隐私清单可以通过签名内置 PrivacyInfo.xcprivacy 文件 】https://uniapp.dcloud.net.cn/tutorial/app-ios-privacyinfo.html#privacyInfo 这里我们插件依赖的fmk通过签名内置 PrivacyInfo.xcprivacy 文件,然后【云端打包会自动合并处理隐私清单】这里不会处理xcfmk中的PrivacyInfo.xcprivacy 文件吗?那 xcfmk里面通过签名内置的PrivacyInfo.xcprivacy 文件相当于没有作用了

回复 iMengqing: 你怎么确定没有作用的?你用xcode打包的app 内的xcframework的隐私清单你能找到吗? 插件配置里写的很清楚ios目录下的我们会合并到app的隐私清单当中 xcframework中的按照苹果官方的要求无需处理

回复 iMengqing: 云打包的逻辑跟原生xcode打包是一致的

回复 DCloud_iOS_WZT: 如果xcode打包的话,我们将xcfmk embed到工程中,是可以生成隐私清单的pdf的,uni打包有没有类似的功能,还有如果我们xcframework里面有PrivacyInfo.xcprivacy 文件的话,我们还需要在插件的ios目录下放一份一模一样的插件吗

回复 iMengqing: embed动态库才需要设置 你有试过这样在运行时会产生什么样的问题么? 你可以把xcframework制作成动态库 在uni里一样能看到framework的隐私清单

回复 iMengqing: 你设置了embed是可以看到隐私清单 但是运行时应该会Crash 因为你的xc不是动态库

回复 iMengqing: 还有【xcframework中的按照苹果官方的要求无需处理】这里,如果原生xcode打包ipa的话,xcfmk不embed到工程中是无法生成隐私清单的pdf的,麻烦问下这里 无需处理的意思大概指的是?

回复 DCloud_iOS_WZT: 不会crash的 xcode 15支持了静态库的embed。

回复 iMengqing: 字面意思 静态库在ipa就是看不到隐私清单 苹果原文就是说app不需要关心xcframework中的隐私清单 具体苹果官方怎么获取的尚不清楚 各家原生SDK你看文档也没有说让你在app里填他们SDK的隐私清单吧 所以这里苹果那边怎么处理是不清楚的

回复 iMengqing: 你这里说的应该是xcode15编译出来的静态库吧 老版本的应该不行

回复 iMengqing: 我们私信沟通一下吧

在 Uni-App 打包 iOS IPA 包时,如果 PrivacyInfo.xcprivacy 文件中未包含 xcframework 中的隐私相关 key,可能会导致 App 在提交到 App Store 时被拒绝。这是因为从 iOS 17 开始,苹果要求所有应用必须明确声明其使用的隐私相关功能。

以下是解决这个问题的步骤:


1. 确认 xcframework 的隐私声明

首先,检查你使用的 xcframework 是否提供了与隐私相关的声明。通常,xcframework 的文档或发布说明中会列出需要声明的隐私 key。如果没有,可以联系 xcframework 的开发者或查阅其官方文档。


2. 更新 PrivacyInfo.xcprivacy 文件

在 Uni-App 项目中,PrivacyInfo.xcprivacy 文件通常位于 nativeplugins 目录下。如果没有该文件,可以手动创建一个。

文件格式

PrivacyInfo.xcprivacy 文件是一个 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>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPITypeFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>CA92.1</string>
            </array>
        </dict>
    </array>
    <key>NSPrivacyCollectedDataTypes</key>
    <array>
        <dict>
            <key>NSPrivacyCollectedDataType</key>
            <string>NSPrivacyCollectedDataTypeName</string>
            <key>NSPrivacyCollectedDataTypeLinked</key>
            <true/>
            <key>NSPrivacyCollectedDataTypeTracking</key>
            <false/>
            <key>NSPrivacyCollectedDataTypePurposes</key>
            <array>
                <string>Analytics</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

添加 xcframework 的隐私 key

根据 xcframework 的文档,添加相应的隐私 key。例如,如果 xcframework 使用了相机功能,需要添加以下内容:

<dict>
    <key>NSPrivacyAccessedAPIType</key>
    <string>NSPrivacyAccessedAPITypeCamera</string>
    <key>NSPrivacyAccessedAPITypeReasons</key>
    <array>
        <string>DDA9.1</string>
    </array>
</dict>
回到顶部