如何仅在调试模式下启用 3D 触摸(静态快速操作)?

How to enable 3D touch(static quick actions) only in debug mode?

我们的团队正在开发一个应用程序,我想添加一些主屏幕快速操作,仅用于调试目的。另外,我希望在全新安装后立即启用它,这意味着动态快速操作不是一个选项。但是,我不知道我们是否只能在调试模式下启用静态快速操作。有什么办法可以实现吗?

显然,问题是您要求 Info.plist 中的条目用于调试配置,而不是用于发布配置。 Info.plist 的内容不会根据配置自动出现和消失。但是 what 文件被用作 Info.plistcan 改变的东西配置,因为它只是一个构建设置。所以解决这个问题的一种方法是一个特殊的配置和一个特殊的 Info.plist 来配合它。

您有两个主要选择:

- 任何类型文件的 GENERAL 选项:

最简洁的方法是为每个配置创建单独的文件。那么:

  • 您可以在项目构建设置中为每个配置设置路径,如下所示:

  • 或者您可以使用 运行 脚本来处理此文件或您在构建过程中需要更改的任何文件:

    • 创建两个不同的 info.plist 文件,一个用于调试,另一个用于生产
    • 前往项目构建设置并创建新的 运行 脚本阶段
    • 使用以下脚本:
sourceFilePath="$PROJECT_DIR/$PROJECT_NAME/"
debugFileName="Debug-Info.plist"
releaseFileName="Release-Info.plist"

if [ "$CONFIGURATION" == "Debug" ]; then
cp $sourceFilePath/$debugFileName "$INFOPLIST_FILE"
else
cp $sourceFilePath/$releaseFileName "$INFOPLIST_FILE"
fi

请注意,在此示例中:

  • 我使用 Debug-Info.plist 作为调试模式文件。
  • 我使用Release-Info.plist作为发布模式文件。
  • 我将所有文件复制到与原始 info.plist 文件相同的目录中。

但是我做了所有的变量,你可以把它们改成任何你想要的。

- 任何 plist 文件的更具体选项:

由于 Info.plist 是一个 属性 列表,您可以使用 PlistBuddy 直接编辑它的任何值。这是仅在调试模式下添加快捷方式项目的示例脚本:

/usr/libexec/PlistBuddy -c "Delete :UIApplicationShortcutItems" "$INFOPLIST_FILE"

if [ "$CONFIGURATION" != "Debug" ]; then
exit
fi

/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems array" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "delete :UIApplicationShortcutItems" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems array" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0 dict" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemIconType string UIApplicationShortcutIconTypePlay" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemTitle string Play" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemSubtitle string Start playback" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemType string PlayMusic" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemUserInfo dict" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "add :UIApplicationShortcutItems:0:UIApplicationShortcutItemUserInfo:firstShortcutKey1 string firstShortcutKeyValue1" "$INFOPLIST_FILE"

记得 运行 这个脚本 Copy Bundle Resources.

之前

我建议您始终将脚本代码放在一个单独的文件中,并在构建阶段调用它。