2016-01-27 53 views
13

我有一個奇怪的重定向到我們的登錄系統在iOS 9中的應用程序問題。深度鏈接重定向到應用程序只適用於iOS 9和第二次嘗試

現在,我已經有了abitrary payload,我的url方案在我的plist文件中正確設置。

什麼情況是這樣的:

  • 用戶帶到一個SFSafariViewController與Facebook登錄/谷歌
  • 用戶輸入他的證書(或沒有,如果他們已經被緩存)
  • 代替被重定向到我們的應用程序,那麼如果用戶的憑據被緩存,或者卡在最終的google/facebook登錄頁面上,則該用戶將陷入空白頁面。不會出現「在應用程序中打開」對話框,並且不會調用openUrl AppDelegate函數。

現在,如果用戶關閉SFSafariViewController,又回到我們的應用程序的登錄頁面,並嘗試再次登錄本網站,第二次,重定向到應用程序的工作從那裏每次和的OpenURL AppDelegate的方法被調用各時間。

請注意,在iOS9上,我們以前在應用程序外重定向到Safari以完成登錄過程(而不是使用SFSafariViewController)並且具有相同的問題,而「打開應用程序」彈出窗口重定向到應用程序只會在第二次登錄嘗試中顯示。

這一切都只發生在iOS 9上。在iOS 8上,不會出現此問題,並且我們的用戶在登錄後總是被重定向到應用程序。

OAuth登錄後發送到應用程序的重定向網址與首次登錄嘗試時相同。

有沒有人在iOS 9上遇到這樣的問題?

+0

不,這看起來有些奇怪的事情,我正在開發目前的一個應用程序..升級到ios 9首先它沒有工作,然後一旦我添加auth ino.plist,它開始工作..但從你的問題..它看起來有點尷尬..它不是第一次工作,然後它的工作.... –

+0

你可以發佈你的代碼你正在運行的社交項目認證 –

+0

它的好處,如果你把你的登錄代碼在這裏。 –

回答

3

正如你所提到的關於Facebook的,所以

  1. 首先,猜你是從缺少的FBSDKApplicationDelegate的application:openURL:sourceApplication:annotation:通話UIApplicationDelegate的application:openURL:options:

  2. 您可能會丟失這條線NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];UIApplicationDelegate'sdidFinishLaunchingWithOptions

  3. 交叉檢查你是否遵循了安裝在本https://developers.facebook.com/docs/ios/ios9

  4. 提到如果設備是越獄,然後在IOS 9.0.2會造成URL方案的問題。

解決方案,爲我工作是代碼的下面行,因爲我有兩個FB/G +集成在我的應用程序一樣的你: -

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options { 
    return [[FBSDKApplicationDelegate sharedInstance] application:app 
                  openURL:url 
               sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
                 annotation:options[UIApplicationOpenURLOptionsAnnotationKey]] 
      || [[GIDSignIn sharedInstance] handleURL:url 
            sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
              annotation:options[UIApplicationOpenURLOptionsSourceApplicationKey]]; 
} 
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 

     return [[FBSDKApplicationDelegate sharedInstance] application:application 
                  openURL:url 
               sourceApplication:sourceApplication 
                 annotation:annotation 
       ] || 
       [[GIDSignIn sharedInstance] handleURL:url 
              sourceApplication:sourceApplication 
               annotation:annotation]; 
    } 
0

我有深層鏈接經驗問題在我的情況下,問題的根源在於我們在信息中設置了CFBundleIdentifier。通過刪除它或將其設置爲你的應用程序命名它來修復我們的路由問題。

希望有所幫助。

相關問題