-1

最近,我們得到了我們的iOS應用程序被拒絕,因爲以下的拒絕:iOS應用上使用AWS cognito實現從移動樞紐

我們注意到,用戶被引導到Safari瀏覽器登錄或註冊一個帳戶,這提供了糟糕的用戶體驗。

然而,啓動Safari窗口對於Facebook /谷歌登錄該位是AWSMobileHubHelper框架的一部分,所以我們不能修改代碼。

任何想法/解決方案將不勝感激。

回答

0

從使用Facebook SDK的iOS 9開始,這是每個Facebook登錄的預期行爲。 Mobile Hub quickstart應用程序只是應用Facebook SDK 3並按照指示使用API​​。查看下面的簡要說明並閱讀評論以獲得更好的見解。這不是Facebook的熱門決定,如果你想實驗,其他人已經提供瞭解決方法(通過移動瀏覽器強制用戶驗證)。至於AWSMobileHubHelper框架,我們正在考慮在某些時候提供這個功能,但沒有時間表。

「自動將人員默認爲iOS 9最佳體驗的邏輯。這意味着Facebook登錄,Facebook和Messenger,應用程序邀請,應用程序事件或Native Like之間的SDK對話將自動決定最佳體驗人們基於他們的設備。「

來源: https://developers.facebook.com/blog/post/2015/09/10/new-SDK-for-iOS9/

+0

感謝您的回覆。但問題不在於Facebook SDK 3。這是關於AWSMobileHubHelper提供的Facebook/Google登錄的默認行爲。 Google SDK 3(與mobilehub捆綁在一起)提供了在Web視圖中啓動登錄頁面的方法(通過allowSignInWithWebView),但AWS幫助程序選擇在Safari中啓動,而不是將allowSignInWithBrowser設置爲true。不用說,如果內置的AWSMobileHub功能導致您的應用在應用商店被拒絕......那麼這是一個問題... – xaksis

2

於是我找到了一個解決方法。我只需抓住GIDSignIn實例並自己更改屬性。如果任何其他人想知道怎麼了,你要做的是:

  1. 添加一個橋,頭和導入#import <GoogleSignIn/GoogleSignIn.h>
  2. 實施GIDSignInUIDelegate的presentViewController方法您的主登錄控制器上
 

    func signIn(signIn: GIDSignIn!, presentViewController viewController: UIViewController!) { 
     presentViewController(viewController, animated: true, completion: nil) 
    } 

  • 編輯演示登錄碼是這樣的:
  •  
    
    
        func loginWithGoogle(delegate: GIDSignInUIDelegate!) { 
          let googleProvider = AWSGoogleSignInProvider.sharedInstance() 
    
          // It is important that these are initialized after 
          // AWSGoogleSignInProvider.sharedInstance() is called 
          GIDSignIn.sharedInstance().uiDelegate = delegate 
          GIDSignIn.sharedInstance().allowsSignInWithBrowser = false 
          GIDSignIn.sharedInstance().allowsSignInWithWebView = true 
    
          handleLoginWithSignInProvider(googleProvider, callback: callback) 
         } 
    
    
    +0

    感謝您的迴應!這是否適用於aws移動中心應用程序?從我收集的信息中,他們重置AWSGoogleSignInProvider.m中的此值不僅僅是爲了初始登錄,還是爲了恢復會話。 – xaksis

    +0

    從我可以告訴,它在兩種情況下都適用於我。 – cacholonu