我试图将Facebook和谷歌登录集成到我的应用程序中,但遇到问题:两者都需要将以下内容添加到Appdelegate中的openURL方法中:
return [GIDSignIn sharedInstance] handleURL:url
sourceApplication:sourceApplication
annotation:annotation]];
return [FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
]]
无论如何都要让这两者正常合作。我已经在线查看,但答案很模糊,无法提供良好的解释
解决方案
添加了以下功能(从iOS 9开始):
return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation] || [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation ];
答案 0 :(得分:4)
使用以下代码......
- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplicationannotation:(id)annotation
{
if ([FBAppCall handleOpenURL:url sourceApplication:sourceApplication])
return [FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
]];
else
return [GIDSignIn sharedInstance] handleURL:url
sourceApplication:sourceApplication
annotation:annotation]];
}
另一个答案..
- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplicationannotation:(id)annotation
{
NSString *stringURL = [ url absoluteString];
if([stringURL containsString:@"fb"])
{
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
else
{
return [GPPURLHandler handleURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
}
答案 1 :(得分:1)
更新答案
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
let urlString = url.absoluteString
if urlString.contains("fb"){
ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
}
else{
}
return GIDSignIn.sharedInstance().handle(url)
}