2016-02-19 15 views
10

मेरा ऐप उपयोग गूगल + साइन-इन और मेरे appdelegate.swift में मेरे पास है:कैसे एक ही appdelegate.swift में दोनों गूगल + और फेसबुक लॉगइन उपयोग करने के लिए

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 

    var configureError: NSError? 
    GGLContext.sharedInstance().configureWithError(&configureError) 
    assert(configureError == nil, "Error configuring Google services: \(configureError)") 

    GIDSignIn.sharedInstance().delegate = self 

    return true 

} 


func application(application: UIApplication, 
    openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { 
     return GIDSignIn.sharedInstance().handleURL(url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 
} 

अब मैं भी फेसबुक लॉगइन सम्मिलित करना चाहते हैं, लेकिन मेरे पास है appdelegate.swift में इस कोड को जोड़ना:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 
} 

func application(application: UIApplication, 
    openURL url: NSURL, 
    sourceApplication: String?, 
    annotation: AnyObject?) -> Bool { 
     return FBSDKApplicationDelegate.sharedInstance().application(
      application, 
      openURL: url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 
} 

लेकिन इस वापसी त्रुटि क्योंकि कार्यों 'आवेदन' पहले से ही मौजूद हैं, मैं कैसे प्रदर्शन कर सकते हैं दोनों गूगल + और फेसबुक एक ही appdelegate.swift धन्यवाद।

उत्तर

52

आपके आवेदन को फेसबुक and Google लिंक को संभालना चाहिए, फिर true लौटाएं यदि कोई or अन्य कोई दिए गए लिंक को संभाल सकता है।

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

     let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 

     let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(
      application, 
      openURL: url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 

     return googleDidHandle || facebookDidHandle 
} 

और didFinishLaunching में: फिर

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { 
    let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String 
    let annotation = options[UIApplicationOpenURLOptionsKey.annotation] 

    let googleHandler = GIDSignIn.sharedInstance().handle(
     url, 
     sourceApplication: sourceApplication, 
     annotation: annotation) 

    let facebookHandler = FBSDKApplicationDelegate.sharedInstance().application (
     app, 
     open: url, 
     sourceApplication: sourceApplication, 
     annotation: annotation) 

    return googleHandler || facebookHandler 
} 

:

अवहेलना और अगली विधि को लागू:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 

    var configureError: NSError? 
    GGLContext.sharedInstance().configureWithError(&configureError) 
    assert(configureError == nil, "Error configuring Google services: \(configureError)") 

    GIDSignIn.sharedInstance().delegate = self 

    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 

} 
+0

बिल्कुल सही ... +1 .. –

10

स्विफ्ट 3 में, इस तरह से करने की जरूरत है

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    PFFacebookUtils.initializeFacebook(applicationLaunchOptions: launchOptions) 
    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 

    var configureError: NSError? 
    GGLContext.sharedInstance().configureWithError(&configureError) 
    assert(configureError == nil, "Error configuring Google services: \(String(describing: configureError))") 

    return true 
} 
संबंधित मुद्दे