Наша команда разрабатывает приложение, и я хотел бы добавить несколько быстрых действий на главный экран только для целей отладки. Кроме того, я хочу, чтобы он был включен сразу после новой установки, а это означает, что динамические быстрые действия не будут вариантом. Однако я понятия не имею, можем ли мы включить статические быстрые действия только в режиме отладки. Есть ли способ добиться этого?
Как включить 3D Touch (статические быстрые действия) только в режиме отладки?
Ответы (2)
Для этого есть два основных варианта:
- ОБЩАЯ опция для любого типа файла:
Самый простой способ - иметь отдельные файлы для каждой конфигурации. Потом:
- Вы можете указать путь для каждой конфигурации в настройках сборки проекта следующим образом:
Или вы можете использовать сценарий запуска для этого или любого файла, который вам нужно изменить в процессе сборки:
- Create two different
info.plist
files, one for the debug and another for production - Перейдите в настройки сборки проекта и создайте новую фазу запуска сценария.
- Используйте следующий сценарий:
- Create two different
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
.
Я рекомендую вам всегда помещать коды скриптов в отдельный файл и вызывать его просто на этапе сборки.
Очевидно, проблема в том, что вы запрашиваете запись в Info.plist для конфигурации отладки, но не для конфигурации выпуска. Содержимое Info.plist не меняется автоматически в зависимости от конфигурации. Но какой файл используется в качестве Info.plist, это то, что может измениться в зависимости от конфигурации, потому что это просто параметр сборки. Таким образом, один из способов решить эту проблему - это специальная конфигурация и специальный Info.plist, который будет использоваться вместе с ней.