2017-02-13 2 views
2

Ich verwende Google Sign-In SDK 4.0.1. Wenn ich googleSignInButton drücke, stürzt die App ab. Und gab unter Fehler, wie dieses Problem zu beheben:App stürzt ab, wenn Sie auf die Schaltfläche GoogleSignIn klicken

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Your app is missing support for the following URL schemes: com.googleusercontent.apps.107731993306-6s44u18onibp6gi0ddj94si1aifshhg6' 
*** First throw call stack: 
(
    0 CoreFoundation      0x0000000101ac0d4b __exceptionPreprocess + 171 
    1 libobjc.A.dylib      0x000000010110121e objc_exception_throw + 48 
    2 CoreFoundation      0x0000000101b2a2b5 +[NSException raise:format:] + 197 
    3 xxxxx       0x000000010084b3cb -[GIDSignIn signInWithOptions:] + 246 
    4 xxxxx       0x000000010084efc2 -[GIDSignInButton pressed] + 242 
    5 UIKit        0x00000001028f78bc -[UIApplication sendAction:to:from:forEvent:] + 83 
    6 UIKit        0x0000000102a7dc38 -[UIControl sendAction:to:forEvent:] + 67 
    7 UIKit        0x0000000102a7df51 -[UIControl _sendActionsForEvents:withEvent:] + 444 
    8 UIKit        0x0000000102a7ce4d -[UIControl touchesEnded:withEvent:] + 668 
    9 UIKit        0x0000000102965545 -[UIWindow _sendTouchesForEvent:] + 2747 
    10 UIKit        0x0000000102966c33 -[UIWindow sendEvent:] + 4011 
    11 UIKit        0x00000001029139ab -[UIApplication sendEvent:] + 371 
    12 UIKit        0x000000010310072d __dispatchPreprocessedEventFromEventQueue + 3248 
    13 UIKit        0x00000001030f9463 __handleEventQueue + 4879 
    14 CoreFoundation      0x0000000101a65761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
    15 CoreFoundation      0x0000000101a4a98c __CFRunLoopDoSources0 + 556 
    16 CoreFoundation      0x0000000101a49e76 __CFRunLoopRun + 918 
    17 CoreFoundation      0x0000000101a49884 CFRunLoopRunSpecific + 420 
    18 GraphicsServices     0x00000001074cfa6f GSEventRunModal + 161 
    19 UIKit        0x00000001028f5c68 UIApplicationMain + 159 
    20 xxxxxxxx       0x00000001007c449f main + 111 
    21 libdyld.dylib      0x0000000104d5368d start + 1 
    22 ???         0x0000000000000001 0x0 + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException` 

Mein AppDelegate.Swift ist

class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate { 
public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 
    if (error == nil) { 

    let userId:NSString = user.userID as NSString;     // For client-side use only! 
    let idToken: NSString = user.authentication.idToken as NSString; // Safe to send to the server 
    let fullName:NSString = user.profile.name as NSString; 
    let givenName:NSString = user.profile.givenName as NSString; 
    let familyName:NSString = user.profile.familyName as NSString; 
    let email:NSString = user.profile.email as NSString; 
    print(userId) 
    print(userId,idToken,fullName,givenName,familyName,email) 
    } 

    else { 
    print("\(error.localizedDescription)") 
    } 
} 

var window: UIWindow? 

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

    let kclientID:NSString = "107731993306-xxxxxxxxxxxxxxxxx.apps.googleusercontent.com" 

    GIDSignIn.sharedInstance().clientID = kclientID as String! 

    GIDSignIn.sharedInstance().delegate = self 
    return true 
} 


func application(application: UIApplication, 
       openURL url: NSURL, options: [String: AnyObject], annotation:Any, sourceApplication:String?) -> Bool { 

    return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication:sourceApplication, annotation: annotation) 
} 

Bitte geben Sie mir die Lösung. Warum ist es abgestürzt?

+0

Haben Sie URLScheme in Projekt hinzufügen? –

+0

Ja. Ich habe REVERSED_CLIENT_ID- und Bundle-ID-Schemas im Projekt hinzugefügt. –

+0

@VikasDhasal hast du Delegaten Methode in appdelagates? –

Antwort

10

Wie der Fehler eindeutig sagt, fehlt Ihrer App Unterstützung für die URL-Schemas.

Fügen Sie die folgenden Systeme zu Ihrem info.plist

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeRole</key> 
     <string>Editor</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>***Your bundle ID***</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeRole</key> 
     <string>Editor</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>com.googleusercontent.apps.107731993306-6s44u18onibp6gi0ddj94si1aifshhg6</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeRole</key> 
     <string>Editor</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>***Something here***</string> 
     </array> 
    </dict> 
</array> 

Aktivieren Sie diese URL für Ihre id =>https://developers.google.com/identity/sign-in/ios/start-integrating

Ihre info.plist sollte wie folgt aussehen ->

enter image description here

2

Sie müssen Ihrem Projekt ein URL-Schema hinzufügen

  1. Öffnen Sie Ihre Projektkonfiguration: Doppelklicken Sie in der linken Baumansicht auf den Projektnamen. Wählen Sie Ihre App von den ZIELVORGABEN Abschnitt, und wählen Sie die Registerkarte Info, und erweitern Sie den URL-Typen Abschnitt
  2. Klicken Sie auf die Schaltfläche +, und fügen Sie eine URL-Schema - com.googleusercontent.apps.107731993306-6s44u18onibp6gi0ddj94si1aifshhg6

https://developers.google.com/identity/sign-in/ios/start-integrating#add_a_url_scheme_to_your_project

enter image description here

Verwandte Themen