现在越来越多的IOS应用接入了第三方的授权登陆,比如是Facebook、微信登陆、QQ登陆,在IOS上打开第三方的应用和Android上有点不同。如果需要实现调用第三方应用,ios需要在我们的两个函数上实现打开我们的操作。如果对我的文章有兴趣,欢迎订阅我的头条号:一点热,yeehot.com
这两个函数就是:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
returnYES;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
returnYES;
}
1、对于我们的微信登陆和QQ登录,我们一般处理把SDK放进带我们的代码中,还需要配置我们的URL scheme
在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id
2、对于微信来说,我们还需要把应用注册到微信
//向微信注册
[WXApiregisterApp:@"wx你的微信ID"withDescription:@"demo 2.0"];
//向微信注册支持的文件类型
UInt64 typeFlag = MMAPP_SUPPORT_TEXT | MMAPP_SUPPORT_PICTURE | MMAPP_SUPPORT_LOCATION | MMAPP_SUPPORT_VIDEO |MMAPP_SUPPORT_AUDIO | MMAPP_SUPPORT_WEBPAGE | MMAPP_SUPPORT_DOC | MMAPP_SUPPORT_DOCX | MMAPP_SUPPORT_PPT | MMAPP_SUPPORT_PPTX | MMAPP_SUPPORT_XLS | MMAPP_SUPPORT_XLSX | MMAPP_SUPPORT_PDF;
[WXApiregisterAppSupportContentFlag:typeFlag];
3、发起调用
SendAuthReq* req =[[SendAuthReqalloc ] init ] ;
req.scope = @"snsapi_userinfo,snsapi_base" ;
req.state = @"yeehotinfo" ;
//第三方向微信终端发送一个SendAuthReq消息结构
[WXApi sendAuthReq:req viewController:self delegate:self];
4、这是我们打开第三方的应用配置就需要我们注意了。由于微信登陆和QQ登陆都需要我们的返回
return [TencentOAuth HandleOpenURL:url]和return [WXApi handleOpenURL:url delegate:self],那这里如何才能够处理两个结果,这里我们需要对刚刚配置的URL_SCHEMA进行判断。
如果是QQ的路径我们返回QQ的打开处理,如果是微信的路径,我们打开微信的路径。
利用我们的APPID和NSOrderedSame进行判断。
#define QQ_OPEN_SCHEMA @"tencent1111222"
#define WX_OPEN_ID @"wx21e324324324"
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
if ([url.schemecompare:QQ_OPEN_SCHEMA] == NSOrderedSame) {
return [TencentOAuth HandleOpenURL:url];
}
else if([url.schemecompare:WX_OPEN_ID] == NSOrderedSame){
return [WXApi handleOpenURL:url delegate:self];
}
returnYES;
//
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
;
if ([url.schemecompare:QQ_OPEN_SCHEMA] == NSOrderedSame) {
return [TencentOAuth HandleOpenURL:url];
}
else if([url.schemecompare:WX_OPEN_ID] == NSOrderedSame){
return [WXApi handleOpenURL:url delegate:self]
}
returnYES;
}
知识拓展,有时我们还会打开其他的应用,我们可以这样来使用:
比如我们要打开电话
[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"tel://1380013800"]];
又或者打开浏览器
[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"http://www.yeehot.com"]];
打开SMS
[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"sms://1380000"]];
今天的课程就说到这里,欢迎继续关注我的头条号:一点热,yeehot.com
欢迎大家收藏与转发,如果转载到其它网站,请与我联系.