2

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

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

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

4

2 回答 2

2

相当有趣的错误。

发生的事情是:

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

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

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

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

于 2014-03-11T17:19:42.817 回答
0

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

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

于 2015-06-15T08:59:15.230 回答