iOS不同的bundle id映射到同一个应用程序

标签 ios xcode facebook-login deep-linking xcode-scheme

我正在尝试遵循 this answer 中描述的约定管理同一应用程序的应用程序商店和企业版,但我看到了一些非常有趣的行为。

如链接答案中所述,我创建了一个新方案,定义了一个新的“企业”构建配置,并将企业方案设置为使用单独的新 bundle ID。两种方案都指向相同的目标,该目标依赖于新的构建配置来切换行为。我成功地生成了企业版本并通过无线方式分发它,但是,当我在同一个模拟器或手机上安装同一应用程序的两个版本时企业版本实际上运行该应用程序的应用程序商店版本.我所做的任何特定于企业的更改都不会得到反射(reflect)。即使当我关闭应用程序时 - iOS7 动画回到主屏幕也会动画回到应用程序商店图标 - 而不是企业图标。

显然,我希望能够将它们维护为独立运行的单独版本。我觉得我一定是从根本上误解了目标和计划才会出现这种行为。任何帮助将不胜感激。

最佳答案

非常有趣的错误。

发生的事情是:

  • 我们在企业版上使用 Facebook 登录来通过我们自己的服务进行身份验证。
  • FB SDK 将接管并踢出网络/ View 或 Facebook 应用程序,具体取决于它自己的逻辑。至关重要的是 - 我们使用的是在他们的开发者网站上配置的相同的 Facebook“应用程序”。
  • 当fb返回时,它会调用fb{app_id}表示的url方案
  • iOS 决定(始终)打开首次安装的、响应该 URL 方案的应用程序。在大多数情况下,这是应用商店版本而不是企业版本。

这个问题的解决方案 - 也许在这一点上很明显 - 是使用两个不同的 Facebook 应用程序,以便 iOS 可以将返回的 OAuth 响应路由到正确的应用程序。根据我最初正在研究的答案,最好由...来完成

  • 创建一个名为 FACEBOOK_ID 的新用户定义build设置
  • 使用生产应用 ID 进行调试和发布,同时使用新 ID 进行企业应用。
  • 在 info.plist 中,将 FacebookAppID 的值更改为 ${FACEBOOK_ID}
  • 在您的网址类型中,将 facebook 架构更改为 fb${FACEBOOK_ID}
  • 这应该会成功路由您的 Facebook 登录信息。

请记住,这是所有深层链接的普遍潜在错误 - 不仅仅是 Facebook 登录。

关于iOS不同的bundle id映射到同一个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304558/

相关文章:

ios - 添加几个自定义元数据 Firebase Storage swift

ios - 如何从充当服务器的 iPhone 流式传输视频?

IOS SWIFT : You have already authorized facebook ios

php - 从 ZF2 登录 Facebook 和 Twitter

swift - 使用 Xcode 捕获 Swift 代码中的崩溃

android - Facebook 登录 Android 后应用程序关闭(Facebook SDK 版本 4.6.0)?

ios - Objective-C 检查旋转的 UIView 的 subview 是否相交?

ios - 如何将自定义 C++ 类对象保存到 NSUserDefaults?

arrays - 如何初始化@Binding SwiftUi

ios - 警告文本字段中的大写 [仅第一个字]