1

Swiftでiosアプリを書くことを学んでいます。

しかし、Google Developers ページの指示に従うと。

https://developers.google.com/identity/sign-in/ios/start?ver=swift

Xcodeは、多くのコンパイルが間違っていることを示しています。

たとえば、命令の次のコードは、AppDelegate に追加する必要があります。

func application(application: UIApplication,
  openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
    var options: [String: AnyObject] = [UIApplicationOpenURLOptionsSourceApplicationKey: sourceApplication,
                                        UIApplicationOpenURLOptionsAnnotationKey: annotation]
    return GIDSignIn.sharedInstance().handleURL(url,
        sourceApplication: sourceApplication,
        annotation: annotation)
}

これは表示されます

ambiguous reference to member 'subscript'

そして、このコードを次のように変更する必要があります。

private func application(application: UIApplication,
                     openURL url: URL, options: [String: AnyObject]) -> Bool {
        return GIDSignIn.sharedInstance().handle(url as URL!,
                                                    sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication.rawValue] as? String,
                                                    annotation: options[UIApplicationOpenURLOptionsKey.annotation.rawValue])
    }

次に、コンパイラを渡します。

もう 1 つのコンパイル エラーは、AppDelegate に次の 2 つのコードを追加する必要があることです。

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
  withError error: NSError!) {
    if (error == nil) {
      // Perform any operations on signed in user here.
      let userId = user.userID    
      // ...
    } else {
      print("\(error.localizedDescription)")
    }
}
func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!,
  withError error: NSError!) {
    // Perform any operations when the user disconnects from app here.
    // ...
}

デバッガーは、関数名を置き換える必要があることを教えてくれます

「signIn」を「sign」に

そして、それはコンパイラを通過します。

最後の 2 つのコンパイル エラーは、upside と同じです。

コンパイラは、UIviewcontroller コードで関数「signIn」を「sign」に変更する必要があることを教えてくれます。

"しかし"

コンパイラの指示に完全に従い、シミュレーターを正常に実行しましたが、ユーザーがアプリでユーザーのデータを取得できるようにしても、データを取得できません。

そして、コンパイラは私のためにこれを示しています:

application:openURL:sourceApplication:annotation の実装: 見つかりません。ハンドラーを App Delegate に追加してください。クラス: MyClassName .AppDelegate

それで......

アプリケーションがハンドラーを見つけられない理由を知っている人はいますか?

これらのコンパイル エラーは ios が 10 に更新されたことが原因であると推測されます。関数の名前を変更するアクションが Google のデータを取得できなかったかどうかはわかりません。

ご回答有難うございます。:)

Google デベロッパー ページ: https://developers.google.com/identity/sign-in/ios/sign-in?ver=swift

4

0 に答える 0