【问题标题】:iOS URL Scheme for FacebookFacebook 的 iOS URL 方案
【发布时间】:2014-09-02 19:05:38
【问题描述】:

iOS Facebook 要求我添加一个 URL 方案,以便用户可以在我的应用程序中通过 Facebook 登录/注册。那么,我也可以使用这个 Facebook URL 方案来启动我的应用程序吗?我不需要支持深度链接——我只想从营销电子邮件中启动应用程序。 显然,添加我自己的 URL 方案是首选,但添加我自己的方案需要几周时间才能使应用程序投入生产。

我为什么不应该同时使用 Facebook URL 方案(如 fb12345://test)?

【问题讨论】:

    标签: ios url facebook-ios-sdk


    【解决方案1】:

    Facebook 的 iOS SDK 是开源的,因此您实际上可以单步调试代码,看看会发生什么。我在我的应用程序上使用虚拟 URL fb12345://noop 进行了尝试,发现 A)正在进行大量测试,B)它们似乎都失败了,没有任何副作用。

    你的里程可能会有所不同,但我的策略是:

    1. 使用稍后会提醒您正在执行的操作的 URL,例如fb12345://placeholder-until-Brett-does-something-better

    2. 选择几个场景,登录 Facebook,未登录 Facebook,登录但令牌无效。

    3. 使用调试器逐步完成这些场景,并确保您没有触发 Facebook SDK 中的任何逻辑。

    4. 在您的应用的版本中,为 Facebook 内容编写一个包装器:

      if ([url.scheme isEqualToString:facebookScheme] && ![url.host isEqualToString:@"placeholder-until-Brett-does-something-bette"]) {
          return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
      }
      
    5. 在合理的情况下尽快停止使用此 hack。跟踪您的应用的 hacky 版本的用户数量。当它下降到您觉得舒服的程度时,开始更新您的 URL 以指向新方案。

    您还必须接受这样一个事实:某些第三方开始使用该 URL 启动您的应用,或者您可能有一些活跃用户没有将应用更新到非 hacky 版本.您可能永远无法清理您的 URL 处理程序或指向该 Facebook URL 以外的任何内容,因为风险太高了。

    【讨论】:

      【解决方案2】:

      AFAIK Facebook 让您使用的特殊 url 方案包含您的 Facebook 应用程序 ID。这是public information。所以那里没有伤害。

      只要 Facebook SDK 不会误解您打开应用程序时使用的 url 中的数据,并且会对其进行一些奇怪的处理(例如,由于参数无效或其他任何原因(不太可能但可能)而崩溃),您应该是好的。

      也就是说,你需要发布你的

      - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
      

      对我来说,100% 不会有什么不好的事情发生。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 2012-08-20
        • 1970-01-01
        • 1970-01-01
        • 2019-03-10
        相关资源
        最近更新 更多