Facebook的iOS URL方案

Facebook的iOS URL方案,ios,url,facebook-ios-sdk,Ios,Url,Facebook Ios Sdk,iOS Facebook要求我添加URL方案,以便用户可以在我的应用程序中通过Facebook登录/注册。那么,我也可以使用这个Facebook URL方案来启动我的应用程序吗?我不需要支持深度链接——我只想通过营销电子邮件启动应用程序。 显然,添加我自己的URL方案是首选,但添加我自己的方案需要几周时间,然后应用程序才能投入生产 有什么理由我不应该同时使用Facebook URL方案(如fb12345://test)?AFAIK Facebook让您使用的特殊URL方案包含您的Facebook

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


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

AFAIK Facebook让您使用的特殊URL方案包含您的Facebook应用程序id。这是。因此没有造成任何伤害

只要Facebook SDK不会曲解您打开应用程序时使用的url中的数据,并且不会对其进行一些奇怪的操作(例如,由于无效参数或其他原因(不太可能但可能)导致崩溃),您就应该很好

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

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

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

AFAIK Facebook让您使用的特殊url方案包含您的Facebook应用程序id。这是。因此没有造成任何伤害

只要Facebook SDK不会曲解您打开应用程序时使用的url中的数据,并且不会对其进行一些奇怪的操作(例如,由于无效参数或其他原因(不太可能但可能)导致崩溃),您就应该很好

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

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

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

AFAIK Facebook让您使用的特殊url方案包含您的Facebook应用程序id。这是。因此没有造成任何伤害

只要Facebook SDK不会曲解您打开应用程序时使用的url中的数据,并且不会对其进行一些奇怪的操作(例如,由于无效参数或其他原因(不太可能但可能)导致崩溃),您就应该很好

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

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

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

AFAIK Facebook让您使用的特殊url方案包含您的Facebook应用程序id。这是。因此没有造成任何伤害

只要Facebook SDK不会曲解您打开应用程序时使用的url中的数据,并且不会对其进行一些奇怪的操作(例如,由于无效参数或其他原因(不太可能但可能)导致崩溃),您就应该很好

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

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

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

Facebook的iOS SDK是开源的,所以你可以一步一步地浏览代码,看看会发生什么。我在我的应用程序上使用了一个虚拟URL
fb12345://noop
,发现a)有很多测试正在进行,B)它们似乎都失败了,没有副作用

您的想法可能会有所不同,但我的策略是:

  • 使用一个URL,该URL将在以后提醒您正在做什么,例如,
    fb12345://占位符,直到Brett做得更好

  • 选择几个场景,登录到Facebook,未登录到Facebook,登录但使用无效令牌

  • 使用调试器逐步完成这些场景,并确保没有绊倒Facebook SDK中的任何逻辑

  • 在应用程序的新版本中,围绕Facebook内容写一个包装:

    if ([url.scheme isEqualToString:facebookScheme] && ![url.host isEqualToString:@"placeholder-until-Brett-does-something-bette"]) {
        return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
    }
    
  • 只要合理,就停止使用此黑客。跟踪应用程序黑客版本的用户数量。当它下降到您满意的程度时,开始更新您的URL以指向新方案


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

    Facebook的iOS SDK是开源的,因此您可以实际逐步查看代码并查看发生了什么。我在我的应用程序上使用了一个虚拟URL
    fb12345://noop
    ,发现a)有很多测试正在进行,B)它们似乎都失败了,没有副作用

    您的想法可能会有所不同,但我的策略是:

  • 使用一个URL,该URL将在以后提醒您正在做什么,例如,
    fb12345://占位符,直到Brett做得更好

  • 选择几个场景,登录到Facebook,未登录到Facebook,登录但使用无效令牌

  • 使用调试器逐步完成这些场景,并确保没有绊倒Facebook SDK中的任何逻辑

  • 在应用程序的新版本中,围绕Facebook内容写一个包装:

    if ([url.scheme isEqualToString:facebookScheme] && ![url.host isEqualToString:@"placeholder-until-Brett-does-something-bette"]) {
        return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
    }
    
  • 只要合理,就停止使用此黑客。跟踪应用程序黑客版本的用户数量。当它下降到您满意的程度时,开始更新您的URL以指向新方案


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

    Facebook的iOS SDK是开源的,因此您可以实际逐步查看代码并查看发生了什么。我在我的应用程序上使用了一个虚拟URL
    fb12345://noop
    ,发现a)有很多测试正在进行,B)它们似乎都失败了,没有副作用

    您的想法可能会有所不同,但我的策略是:

  • 使用一个URL,该URL将在以后提醒您正在做什么,例如,
    fb12345://占位符,直到Brett做得更好

  • 选择几个场景,登录到Facebook,未登录到Facebook,登录但使用无效令牌

  • 使用调试器逐步完成这些场景,并确保您没有将任何逻辑绊倒