Handling different URL Schemes in iOS (Facebook and Instagram)

梦想的初衷 提交于 2019-11-30 20:36:54
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
        NSLog(@"url: %@", [url scheme]);

        BOOL callBack;
        // Facebook Call back checking.
        if ([[url scheme] isEqualToString:@"facebook_url_schema"])
        {
            callBack = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
        }
        // Instagram call back checking.
        else if ([[url scheme] isEqualToString:@"instagram_url_schema"])
        {
            callBack = [self.instagram handleOpenURL:url];
        }
        return callBack;![enter image description here][1]
    }

Dhaval Jivani

Swift :-

Example for use both Google+ and Facebook in swift app, both of them require the OpenURL method in the appDelegate.

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

   println("URL : \(url)")
   if(url.scheme!.isEqual("fb1627825840806667")) {
        println("Facebook url scheme")

    return FBSDKApplicationDelegate.sharedInstance().application(
            application,
            openURL: url,
            sourceApplication: sourceApplication,
            annotation: annotation)

   } else {

        println("Google+ url scheme")

       return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)

   }
}

For Swift 2.0

//MARK: FACEBOOK , GOOGLE CALLBACK URL METHOD
    //google-Firebase signin - IOS 8
    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 facebookDidHandle || googleDidHandle
    }

    //google-Firebase signin - IOS 9
    @available(iOS 9.0, *)
    func application(application: UIApplication,
                     openURL url: NSURL, options: [String: AnyObject]) -> Bool {

        let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])

        let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])

        return facebookDidHandle || googleDidHandle
    }
ardavar

I think I found

[url scheme] gives those specific URL schemes

Xcode - multiple URL Schemes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!