如何配置多个 iOS URL Scheme?

4

一个应用程序是否可以注册多个与不同的应用程序ID相关联的URL方案。例如,我有针对应用程序每个环境的单独应用程序,每个应用程序都有自己独特的bundke ID。

com.test.app-dev (testapp-dev://)
com.test.app-qa (testapp-qa://)
com.test.app (testapp://)

如果我想从URL中启动开发应用程序,我需要使用testapp-dev://。

1
如果应用程序具有不同的捆绑标识,则它们是不同的应用程序。您需要为每个应用程序包含适当的 info.plist 条目。这是在构建期间需要管理的事情。 - Paulw11
感谢您的提示。我能够在XCode方案中的每个环境中执行自定义脚本,使用plist buddy更新构建产品目录中的Info.plist文件。 - Fergal Rooney
我在另一个问题中回答了这个问题 答案 - 配置文件 - devjme
2个回答

1

我在Xcode 12中所做的:

目标 -> 您的应用程序 -> 构建设置 -> + -> 添加用户定义的设置 ->

设置:URL_SCHEME

值:yourapp-debugyourappyourapp-test等不同方案。

目标 -> 您的应用程序 -> 信息 -> URL类型

URL方案:$(URL_SCHEME)

define value use value


0
如@Paulw11所建议的,这需要在构建时完成。对于每个应用程序环境,我都有一个关联的Xcode方案。在xcode方案的构建部分,您可以配置后构建操作。您可以将shell脚本作为后构建操作执行。
例如,在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"

然后在 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方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接