我在选择构建进行内部测试时收到了这条消息。它说在信息中设置ITSAppUsesNonExemptEncryption。请问这是什么意思?有必要吗?


苹果简化了我们的构建过程,所以你不需要每次都点击相同的复选框。你可以通过将这个标志编译到应用程序中来简化你的iTC流程。

截至2019年,情况仍然如此。


在plist文件中添加此密钥…一切都会好起来的。

<key>ITSAppUsesNonExemptEncryption</key>  
<false/>

只是在</dict></plist>之前粘贴


基本上<key>ITSAppUsesNonExemptEncryption</key><false/>表示一个布尔值等于NO。

由@JosepH更新:这个值意味着应用程序不使用加密,或只使用豁免加密。如果你的应用程序使用加密并且没有被豁免,你必须将这个值设置为YES/true。

当一个应用程序被认为使用加密时,这似乎是有争议的。


根据WWDC2015发布最新消息

在info中设置ITSAppUsesNonExemptEncryption为NO。plist作品 很好。如果你的应用程序中没有加密内容。

在选择构建进行内部测试时,我得到了这个弹出框,我没有在我的信息中包含“ITSAppUsesNonExemptEncryption”键。Plist,但仍然为我工作。

即使我成功上传了新的应用程序,也不包括“ITSEncryptionExportComplianceCode”和“ITSAppUsesNonExemptEncryption”密钥。

还有Apple Doc。

重点:如果你的应用程序要求你提供额外的文件 为了加密审查,你的应用程序不会有Ready for Sale 在出口符合性审查和批准之前,存储的状态 你的文档。该应用程序不能进行预发布测试 直到出口合规部门审查并批准为止。

如果你的应用没有使用加密,并且你不想在提交时回答这些问题,你可以在你的构建中提供导出遵从性信息。您还可以通过iTunes Connect提供新的或更新的文档,以便在将其上传到iTunes Connect之前接收相应的键字符串值。

要在iTunes Connect中添加导出合规性文档:

Go to the Encryption section under Features. Click the plus sign next to the appropriate platform section. Answer the questions appropriately. Attach the file when prompted. Click Save. Your documents will then be sent for review immediately and the status of your document will show in Compliance Review. A key value will also be generated automatically that you can include in your Info.plist file. For more information on including the key value with your build, see the Resources and Help section Trade Compliance.

您可以在没有导出遵从性密钥的情况下上传构建。如果您包含一个密钥,它可以表明您不需要导出遵从性文档;这并不需要批准。如果包含引用特定出口合规文件的密钥,则该文件必须获得批准;它不能在评审中或被拒绝。

您可以随时通过单击文档文件名并选择更多信息来查看您的答案。如果您需要更新您的文档或更改问题的任何答案,您将需要重复上述步骤以添加与您的更改相对应的新文档。


基本上有两件事要记住。如果你根本不使用加密,或者你是豁免规则的一部分,你才可以将它设置为NO。这适用于以下几种应用:

资料来源:美国商会:https://www.bis.doc.gov/index.php/policy-guidance/encryption/encryption-faqs#15

Consumer applications piracy and theft prevention for software or music; music, movies, tunes/music, digital photos – players, recorders and organizers games/gaming – devices, runtime software, HDMI and other component interfaces, development tools LCD TV, Blu-ray / DVD, video on demand (VoD), cinema, digital video recorders (DVRs) / personal video recorders (PVRs) – devices, on-line media guides, commercial content integrity and protection, HDMI and other component interfaces (not videoconferencing); printers, copiers, scanners, digital cameras, Internet cameras – including parts and sub-assemblies household utilities and appliances Business / systems applications: systems operations, integration and control. Some examples business process automation (BPA) – process planning and scheduling, supply chain management, inventory and delivery transportation – safety and maintenance, systems monitoring and on-board controllers (including aviation, railway, and commercial automotive systems), ‘smart highway’ technologies, public transit operations and fare collection, etc. industrial, manufacturing or mechanical systems - including robotics, plant safety, utilities, factory and other heavy equipment, facilities systems controllers such as fire alarms and HVAC medical / clinical – including diagnostic applications, patient scheduling, and medical data records confidentiality applied geosciences – mining / drilling, atmospheric sampling / weather monitoring, mapping / surveying, dams / hydrology Research /scientific /analytical. Some examples: business process management (BPM) – business process abstraction and modeling scientific visualization / simulation / co-simulation (excluding such tools for computing, networking, cryptanalysis, etc.) data synthesis tools for social, economic, and political sciences (e.g., economic, population, global climate change, public opinion polling, etc. forecasting and modeling) Secure intellectual property delivery and installation. Some examples software download auto-installers and updaters license key product protection and similar purchase validation software and hardware design IP protection computer aided design (CAD) software and other drafting tools

注意:这些规则也适用于使用TestFlight测试应用程序


同样的错误是这样解决的

    using UnityEngine;
    using System.Collections;
    using UnityEditor.Callbacks;
    using UnityEditor;
    using System;
    using UnityEditor.iOS.Xcode;
    using System.IO;

public class AutoIncrement : MonoBehaviour {

    [PostProcessBuild]
    public static void ChangeXcodePlist(BuildTarget buildTarget, string pathToBuiltProject)
    {

        if (buildTarget == BuildTarget.iOS)
        {

            // Get plist
            string plistPath = pathToBuiltProject + "/Info.plist";
            var plist = new PlistDocument();
            plist.ReadFromString(File.ReadAllText(plistPath));

            // Get root
            var rootDict = plist.root;

            // Change value of NSCameraUsageDescription in Xcode plist
            var buildKey = "NSCameraUsageDescription";
            rootDict.SetString(buildKey, "Taking screenshots");

            var buildKey2 = "ITSAppUsesNonExemptEncryption";
            rootDict.SetString(buildKey2, "false");


            // Write to file
            File.WriteAllText(plistPath, plist.WriteToString());
        }
    }
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    [PostProcessBuild]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
    {
        //A new build has happened so lets increase our version number
        BumpBundleVersion();
    }


    // Bump version number in PlayerSettings.bundleVersion
    private static void BumpBundleVersion()
    {
        float versionFloat;

        if (float.TryParse(PlayerSettings.bundleVersion, out versionFloat))
        {
            versionFloat += 0.01f;
            PlayerSettings.bundleVersion = versionFloat.ToString();
        }
    }
    [MenuItem("Leman/Build iOS Development", false, 10)]
    public static void CustomBuild()
    {
        BumpBundleVersion();
        var levels= new String[] { "Assets\\ShootTheBall\\Scenes\\MainScene.unity" };
        BuildPipeline.BuildPlayer(levels, 
            "iOS", BuildTarget.iOS, BuildOptions.Development);
    }

}

苹果已经改变了这方面的规则。我阅读了所有的苹果文件和我所能找到的美国出口法规。

我的观点是,直到最近,即使在大多数应用程序中使用HTTPS,也意味着苹果需要导出证书。一些应用程序,如银行应用程序可以,但对于许多应用程序来说,它们不属于非常广泛的例外类别。

然而,苹果现在在JUST使用https的应用程序的豁免类别下引入了一个getout。我不知道他们是什么时候做的,但我想应该是2016年12月或2017年1月。我们现在提交我们的应用程序没有从美国政府的证书。


要从下拉菜单中选择,请输入以下一行:

应用程序使用非豁免加密


在Xcode 12中使用Non-Exempt Encryption而不是ITSAppUsesNonExemptEncryption