iOS不同的捆绑ID映射到同一个应用程序

时间:2014-03-10 15:37:49

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

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

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

显然,我希望能够将这些维护为独立运行的独立版本。我觉得我必须从根本上误解目标和计划才能获得这种行为。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

非常有趣的错误。

发生的事情是:

  • 我们使用facebook登录来验证企业版本上我们自己的服务。
  • FB SDK会接管并发送到网络/视图或fb应用程序,具体取决于它自己的逻辑。至关重要的是 - 我们使用相同的Facebook" app"在他们的开发者网站上配置。
  • 当fb返回时,它将调用由fb{app_id}
  • 表示的url方案
  • iOS决定(一致地)打开首次安装的应用程序,该应用程序将响应该URL方案。在大多数情况下,这是应用商店版本而非企业版。

这方面的解决方案 - 显然是在这一点上 - 是使用两个不同的Facebook应用程序,以便iOS可以将返回的OAuth响应路由到正确的应用程序。为了与我最初的工作方式保持一致,最好由...完成。

  • 创建名为FACEBOOK_ID
  • 的新用户定义构建设置
  • 使用生产应用程序ID进行调试和发布,同时使用Enterprise的新ID。
  • 在您的info.plist中,将FacebookAppID的值更改为${FACEBOOK_ID}
  • 在您的网址类型中,将Facebook方案更改为fb${FACEBOOK_ID}
  • 这应该成功路由您的Facebook登录。

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

答案 1 :(得分:0)

使用URL Scheme Suffix而不是单独的Facebook应用程序更容易。使用URL Scheme Suffix,您可以为bundle id添加后缀,例如:com.example.App.live和com.example.App.beta。这样,Facebook网址方案知道在身份验证后打开哪个应用。

请参阅Facebook的开发者网站上的文档,了解更多信息:https://developers.facebook.com/docs/ios/troubleshooting#sharedappid