内部测试时ITSAppUsesNonExemptEncryption导出合规性?

时间:2016-03-02 05:42:06

标签: ios objective-c itunesconnect

我在为内部测试选择构建时收到此消息。有关在info.plist中设置 ITSAppUsesNonExemptEncryption 的含义是什么意思?有必要吗?

enter image description here

8 个答案:

答案 0 :(得分:187)

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

info.plist value

@JosepH更新:此值表示该应用不使用加密,或仅免除加密。如果您的应用使用加密但不能免除,则必须将此值设置为YES / true。

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

答案 1 :(得分:55)

根据WWDC2015分发Whats New

enter image description here

  

设置&#34; ITSAppUsesNonExemptEncryption&#34;到&#34;否&#34;在info.plist中工作   精细。如果您的应用中没有加密内容。

enter image description here

我弹出这个内容在为内部测试选择构建时,我没有包含&#34; ITSAppUsesNonExemptEncryption&#34;键入我的info.plist但仍然适用于我。

即使我成功上传了新的应用程序也没有包含&#34; ITSEncryptionExportComplianceCode&#34;和#34; ITSAppUsesNonExemptEncryption&#34;密钥。

另外Apple Doc.

  

重要提示:如果您的应用要求您提供其他文档   对于加密审核,您的应用将不具备Ready for Sale   在“出口合规性”已审核并批准之前,商店中的状态   你的文件。该应用无法分发用于预发布测试   直到出口合规部门审核并批准它。

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

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

转到功能下的加密部分。 单击相应平台部分旁边的加号。 适当地回答问题。 出现提示时附加文件。 单击保存。 然后,您的文档将立即发送以供审核,文档的状态将显示在合规性审核中。您还可以自动生成一个键值,您可以将其包含在Info.plist文件中。有关在构建中包含键值的更多信息,请参阅参考资料和帮助部分。

您可以上传没有导出合规性密钥的构建。如果包含密钥,则表明您不需要导出合规性文档;这不需要批准。如果您包含引用特定出口合规性文档的密钥,则该文档必须经过批准;它不能处于审核中或被拒绝。

enter image description here

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

答案 2 :(得分:43)

在plist文件中添加此键...一切都会好的..

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

只需在</dict></plist>

之前粘贴

答案 3 :(得分:23)

Apple简化了我们的构建过程,因此您不必每次都点击相同的复选框。您可以通过将此标记编译到应用程序来简化您的iTC流程。

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

答案 4 :(得分:13)

要从下拉列表中进行选择,请开始输入以下行:

应用使用非豁免加密

答案 5 :(得分:11)

基本上要记住两件事。如果您要么根本不使用加密,或者您是豁免条例的一部分,则只允许将其设置为NO。这适用于以下类型的应用程序:

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

  

消费者应用

     
      
  • 软件或音乐的盗版和盗窃预防;
  •   
  • 音乐,电影,音乐/音乐,数码照片 - 播放器,录像机和组织者
  •   
  • 游戏/游戏 - 设备,运行时软件,HDMI和其他组件接口,开发工具
  •   
  • 液晶电视,蓝光/ DVD,视频点播(VoD),影院,数字视频录像机(DVR)/个人视频录像机(PVR) - 设备,在线   媒体指南,商业内容的完整性和保护,HDMI和   其他组件接口(不是视频会议);
  •   
  • 打印机,复印机,扫描仪,数码相机,互联网相机 - 包括零件和子组件
  •   
  • 家用电器和电器
  •   
     

业务/系统应用程序:系统操作,集成和控制。一些例子

     
      
  • 业务流程自动化(BPA) - 流程规划和调度,供应链管理,库存和交付

  •   
  • 运输 - 安全和维护,系统监控和车载控制器(包括航空,铁路和商业   汽车系统),'智能公路'技术,公共交通   运营和票价收集等

  •   
  • 工业,制造或机械系统 - 包括机器人,工厂安全,公用事业,工厂和其他重型设备,   设施系统控制器,如火警和HVAC

  •   
  • 医疗/临床 - 包括诊断应用,患者安排和医疗数据记录保密

  •   
  • 应用地球科学 - 采矿/钻井,大气采样/天气监测,测绘/测量,水坝/水文

  •   
     

研究/科学/分析。一些例子:

     
      
  • 业务流程管理(BPM) - 业务流程抽象和建模

  •   
  • 科学可视化/模拟/协同仿真(不包括计算,网络,密码分析等工具)

  •   
  • 社会,经济和政治科学的数据综合工具(例如,经济,人口,全球气候变化,舆论   投票等预测和建模)

  •   
     

保护知识产权交付和安装。一些例子

     
      
  • 软件下载自动安装程序和更新程序

  •   
  • 许可证密钥产品保护和类似的购买验证

  •   
  • 软件和硬件设计IP保护

  •   
  • 计算机辅助设计(CAD)软件和其他绘图工具

  •   

注意:这些规定也适用于使用TestFlight

测试您的应用

答案 6 :(得分:4)

同样的错误就像这样解决了

enter image description here

    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);
    }

}

答案 7 :(得分:4)

Apple已经改变了相关规则。我阅读了所有Apple文档以及我能找到的许多美国出口注册表。

我对此的看法直到最近甚至为大多数应用程序使用HTTPS意味着Apple需要出口证书。一些应用程序,如银行业务可以,但对于许多应用程序,它们并不属于非常非常广泛的特殊类别。

然而,苹果公司现在已经在免税类别下推出了一款适用于仅使用https的应用程序。我不知道他们什么时候这样做但我认为这是2016年12月或2017年1月。我们现在提交没有美国政府证书的应用程序。