2014-09-02 61 views
0

iOS Facebook需要我添加一個URL方案,以便用戶可以在我的應用中通過Facebook登錄/註冊。那麼,我是否也可以使用此Facebook URL方案來啓動我的應用程序?我不需要支持深度鏈接 - 我只是想從營銷電子郵件中啓動應用程序。 明顯添加我自己的網址方案是首選,但添加我自己的方案將需要幾個星期才能生產應用程序。Facebook的iOS URL方案

爲什麼我不應該在此期間使用Facebook URL方案(如fb12345://測試)?

回答

2

Facebook的iOS SDK是開源的,所以你可以實際瀏覽代碼,看看會發生什麼。我在我的應用程序上嘗試了一個虛擬網址fb12345://noop,發現A)有很多測試正在進行,B)它們都顯示失敗,沒有副作用。

你milage可能會有所不同,但我的策略是:

  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. 停止。跟蹤您的應用程序的黑客版本上的用戶數量。當它下降到你感覺舒適的程度時,開始更新你的URL以指向新的方案。

你也將不得不接受這樣的事實,事情可能會發生,其中一些第三方開始與URL啓動您的應用,或者您可能誰不更新應用到一些活躍用戶非hacky版本。由於風險太高,您可能永遠無法清理您的URL處理程序或指向除該URL之外的其他任何內容。

1

AFAIK Facebook使用的特殊網址方案包含您的Facebook應用程序ID。這是public information。所以在那裏沒有傷害。

只要Facebook SDK不會誤解URL中的數據,就會打開應用程序,並會對它做些奇怪的事情(例如由於無效參數或其他原因而崩潰(不太可能,但可能)),您應該好。

這就是說,你需要來發表您的

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

對我來說是100%沒有什麼不好的事情發生。