Per-bundleid Facebook iOS url 方案
Posted
技术标签:
【中文标题】Per-bundleid Facebook iOS url 方案【英文标题】:Per-bundleid Facebook iOS url scheme 【发布时间】:2015-04-09 18:10:16 【问题描述】:我遇到了一个不幸的 Facebook ios SDK 设计问题。问题是我们公司使用相同的原型代码库(想想餐厅订购)生产了许多品牌应用程序,它们都需要与同一个 Facebook 应用程序进行交互。
问题在于,如果用户在手机上安装了多个品牌,则 url 方案会发生冲突,并且在从一个应用进行身份验证时,用户可能会返回到错误的应用!
我查看了 Facebook 的 url 方案后缀,但文档说多个后缀是按顺序(!)搜索的,而不是相对于相应的捆绑 ID。这太可怕了。如果它只是将后缀与特定的捆绑 ID 相关联,我们的问题就会消失,但正如它所记录的那样,它将优先于某些品牌而不是其他品牌,这并不比默认行为好。
有什么方法可以将 url 方案后缀与 特定 捆绑包 ID 相关联?
【问题讨论】:
不,为什么他们使用相同的应用程序ID? 因为我们有大约 80 个品牌,并且真的不想创建和管理 80 个不同的 Facebook 应用,因为它们都使用相同的服务。 我听说可以使用对话框进行登录/身份验证,而不是切换应用程序。在 SDK v4 下这仍然可能吗? 找到它:FBSDKLoginManager.loginBehavior = FBSDKLoginBehaviorWeb
。
没有任何方法可以使其自动化。但我会假设您希望用户登录。如果您使用应用开关,则更有可能
【参考方案1】:
您可以通过在应用程序的 plist 中设置 FacebookUrlSchemeSuffix 来明确指定每个应用程序的后缀。发生这种情况时,出于登录和共享对话框的目的,Facebook 应用程序将知道要使用的正确后缀。
它在后缀列表中搜索的唯一一次是深度链接,您可能会使用也可能不会使用。
在任何情况下,您都可能希望按照@WizKid 的建议使用不同的应用 ID,因为您将能够获取每个应用的分析数据,并且它也更易于维护。
【讨论】:
所以你是说如果我将此属性添加到 plist 中,即使我安装了多个应用程序,Facebook 也会足够聪明地知道在返回应用程序时要回调哪个 url 方案?什么是深度链接? 这正是我要说的。如果您还没有进行深度链接,请不要担心。以上是关于Per-bundleid Facebook iOS url 方案的主要内容,如果未能解决你的问题,请参考以下文章
iOS6 Facebook:如果用户没有配置Facebook怎么办?
Facebook通过iOS中的Facebook SDK通过应用程序登录?
在 Facebook-Ios-Sdk 中关闭 Facebook 会话