web-dev-qa-db-ja.com

Xcode8ベータ6を搭載したiOS10ベータ7でGoogleサインインが機能しない

私はアプリストアにiOS10の最初の数ベータまで完全に正常に動作するアプリを持っています(どれが正確かはわかりません)。また、iOS9.3でも問題なく動作します。

ただし、iOS 10ベータ7でテストしておらず、Googleサインインが完全に壊れています。 GIDSignInの最新バージョンのcocoapodsを使用しています。

これが私のコードです:

[GIDSignIn sharedInstance].clientID = [[ParseFetcher sharedInstance] getRandomParseK];
[GIDSignIn sharedInstance].delegate = sharedInstance;
[GIDSignIn sharedInstance].uiDelegate=sharedInstance;
[GIDSignIn sharedInstance].scopes = [NSArray arrayWithObjects:@"https://www.googleapis.com/auth/youtube",@"https://www.googleapis.com/auth/youtube.force-ssl", nil];
[[GIDSignIn sharedInstance] signIn];

これは、デバイス上でどのように見えるかです。

screenshot 1

それはこのように立ち往生しているだけです。

上部の更新ボタンをクリックすると、更新しようとして、ここで永久にスタックします。

screenshot 2

[完了]ボタンをクリックすると、アプリに戻ります。

コンソールに記録されたエラーはありません。

ただし、iOS 10シミュレーターで同じアプリを実行すると、safari view controllerも開きません。何も起こりません。しかし、コンソールはこの長い冗長なものをログに記録します。その中から、以下が最も「有用な」もののように見えますが、何が問題なのかわかりません。

nw_endpoint_resolver_receive_report [8 i.ytimg.com:443 in_progress resolver (satisfied)] received child report:[8.1 206.248.149.148:443 waiting path (satisfied)]
2016-08-22 23:19:51.531570 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_connection_endpoint_report [8.1 206.248.149.148:443 waiting path (satisfied)] reported event path:satisfied
2016-08-22 23:19:51.531909 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_proxy_handler_should_use_proxy Looking up proxy for hostname: <nil>, ifindex: 0
2016-08-22 23:19:51.533116 XXXXAPPNAMEXXXXXXX[4561:195631] [] -[NWConcrete_nw_endpoint_flow startWithHandler:] [8.1 206.248.149.148:443 waiting socket-flow (satisfied)]
2016-08-22 23:19:51.533548 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_flow_setup_socket [8.1 206.248.149.148:443 in_progress socket-flow (satisfied)] creating socket
2016-08-22 23:19:51.534108 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_flow_attach_protocols [8.1 206.248.149.148:443 in_progress socket-flow (satisfied)]
2016-08-22 23:19:51.534672 XXXXAPPNAMEXXXXXXX[4561:195631] [] __nwlog_err_simulate_crash simulate crash already simulated "nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available"
2016-08-22 23:19:51.535415 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available, dumping backtrace:
        [x86_64] libnetcore-856.1.8
    0   libsystem_network.dylib             0x000000010c6e280e __nw_create_backtrace_string + 123
    1   libnetwork.dylib                    0x000000010e0d5194 nw_socket_add_input_handler + 3002
    2   libnetwork.dylib                    0x000000010e0b2db8 nw_endpoint_flow_attach_protocols + 3768
    3   libnetwork.dylib                    0x000000010e0b1dd5 nw_endpoint_flow_setup_socket + 563
    4   libnetwork.dylib                    0x000000010e0b0b34 -[NWConcrete_nw_endpoint_flow startWithHandler:] + 2612
    5   libnetwork.dylib                    0x000000010e0cbd11 nw_endpoint_handler_path_change + 1261
    6   libnetwork.dylib                    0x000000010e0cb740 nw_endpoint_handler_start + 570
    7   libnetwork.dylib                    0x000000010e0e3003 nw_endpoint_resolver_start_next_child + 2240
    8   libdispatch.dylib                   0x000000
2016-08-22 23:19:51.535995 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_flow_attach_protocols [8.1 206.248.149.148:443 in_progress socket-flow (satisfied)] Attached flow protocol
2016-08-22 23:19:51.536475 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_resolver_receive_report [8 i.ytimg.com:443 in_progress resolver (satisfied)] received child report:[8.1 206.248.149.148:443 in_progress socket-flow (satisfied)]

注:iOS9.3は完全に機能します。また、すべてのデバイスで発生します-iPhone6sおよびiPhone5sでテストされています。

12
Pranoy C

これが他の人が直面していることかどうかはわかりませんが、[self.view layoutIfNeeded]を追加して解決しました。私はこれが奇妙であることを知っていますが、これは私のために働いたものです、私自身は理由がわかりません。

私はカスタムビューコンテナを使用していて、その中にGoogleのサインインビューコントローラを子として表示していました。したがって、カスタムビューコントローラーをコンテナーに追加する前に、[self.view layoutIfNeeded]を実行する必要がありました。そうしないと、ビューレイアウトがまだ設定されていないため、GoogleのSDKはおそらく内部のどこかで幅/高さを使用します。

これが正しい解決策であるかどうかはわかりませんが、問題は解決したようです。

1
Pranoy C

GoogleサインインのサンプルiOSプロジェクトにも同じ問題があります。

それは戻ります:

"Error Domain=com.google.GIDSignIn Code=-2 "keychain error" UserInfo={NSLocalizedDescription=keychain error}"

これはバグのようです。

9
Basheer

サインイン(1.7.1)に(まだ)Google+ SDKを使用していますが、iOS 10ベータ7でも壊れたです。GPPSignInが非推奨になったため、GIDSignInへの移行を検討していました。しかし、私は次のベータを待つと思います...

4
Amir Aharon

ターゲットの機能タブで「キーチェーン共有」をオンにすると、機能します。

2
Dylan Diamond

サブビューを適切に表示するようにコードを修正することで、私の場合の解決策を見つけることができます。この警告が表示される前に無視しました:

Warning :-Presenting view controllers on detached view controllers is discouraged

プラノイCの答えを見るまで。私のコードは、ビューコンテナを使用してGoogleボタンを含むサブビューを表示するのと非常によく似た方法で構造化されています。サブビューを表示するためにコンテナを正しく使用していませんでした。だから私は Appleのガイド 、特にこのブロックに従いました:

- (void) displayContentController: (UIViewController*) content {
    [self addChildViewController:content];
    content.view.frame = [self frameForContentController];
    [self.view addSubview:self.currentClientView];
    [content didMoveToParentViewController:self];
}

警告が消えると、Googleは適切に機能し始めました。

この問題の根本的な原因については、まだ正確にはわかりませんが、警告はヒントのようです。それは、切り離されたビューコントローラと関係があります。 (私はiOSコーディングの経験があまりないので、誰かがビュー、ビューコントローラーについてより多くの知識を持っている場合は、気軽にチャイムを鳴らしてください。)

1
jqwang

私たちの問題は、アプリデリゲートに自動統合しようとしているサードパーティのプラグインでした。私たちにとって、それはCleverTap(autoIntegrate()関数)でした。

1
Roy Kolak

何もしないアプリケーションの起動が終了しているときに、clientIDを設定するだけです。以下のコードで与えられるように:

インポートFBSDKLoginKitインポートGoogleSignInインポートGGLCore

@UIApplicationMainクラスAppDelegate:UIResponder、UIApplicationDelegate {

var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {


    var ConfigError : NSError?
    GGLContext.sharedInstance().configureWithError(&ConfigError)
    assert(ConfigError == nil, "Error Configuration with Google services: \(ConfigError)")
    GIDSignIn.sharedInstance().clientID = "679401366566-8107g2n11hpnqas58m9v8rk7hl2lgl7s.apps.googleusercontent.com" // Here You Have To Change Your App ID

    let fbDelegate = FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    print("DidFinish")

    return fbDelegate
}
0
MRizwan33