Как @ Paulw11 предположил, что это нужно сделать во время сборки. Для каждой среды приложения у меня есть связанная схема Xcode. В разделе сборки в xcode shceme вы можете настроить действие после сборки. Вы можете выполнить сценарий оболочки как действие после сборки.
Так, например, в схеме com.test.app-dev есть действие после сборки, которое запускает этот скрипт
/usr/libexec/PlistBuddy -c "set :CFBundleURLTypes:0:CFBundleURLSchemes:0 testapp-dev" "$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
/usr/libexec/PlistBuddy -c "set :CFBundleURLTypes:0:CFBundleURLName com.test.app-dev" "$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
Затем в * 1008 В схеме * com.test.app-qa существует сценарий пост-сборки, запускающий этот сценарий:
/usr/libexec/PlistBuddy -c "set :CFBundleURLTypes:0:CFBundleURLSchemes:0 testapp-qa" "$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
/usr/libexec/PlistBuddy -c "set :CFBundleURLTypes:0:CFBundleURLName com.test.app-qa" "$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
Это гарантирует, что для каждого приложения, связанного с каждой средой, будет зарегистрирована правильная настраиваемая схема URL-адреса.