我知道这个问题,但我对Objective C和iOS原生开发没有经验
我有两个方法同名参数不同
<h1>Comments</h1>
<div id="comments">
{{#each comments}}
<h2><a href="/posts/{{../permalink}}#{{id}}">{{title}}</a></h2>
<div>{{body}}</div>
{{/each}}
</div>
如果我同样定义这两个,那么重定向之后的所有oauth请求都会转到功能2.如果我尝试将两者结合起来那么Twitter不工作Twitter只适用于功能2格式
//function 1
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
]
|| [RNGoogleSignin application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
];
}
}
//function 2
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
return [[Twitter sharedInstance] application:application openURL:url options:options];
}
我无法在功能2中添加额外的参数来支持google或fb login
我如何通过函数重载来处理所有请求但是如何处理?
答案 0 :(得分:1)
你可以像这样组合它们:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
] || [RNGoogleSignin application:application
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
]
|| [[Twitter sharedInstance] application:application openURL:url options:options];
return handled;
}
我正在使用:
react native twitter signin,react native fbsdk和react native google signin
答案 1 :(得分:0)
我找到了解决方案
我将它们合并
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
NSString *stringurl = url.absoluteString;
NSString *sub = @"twitterkit";
NSRange range = [stringurl rangeOfString: sub options: NSCaseInsensitiveSearch];
if (range.location != NSNotFound){
return [[Twitter sharedInstance] application:application openURL:url options:options];
}
else{
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
] || [RNGoogleSignin application:application
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
];;
return handled;
}
}
P.S。 我正在使用以下库
反应天然-fbsdk
https://differential.com/insights/meteor-google-oauth-from-react-native/ https://github.com/GoldenOwlAsia/react-native-twitter-signin