iOS url scheme里面如果有多个三方库的时候,需要判断各个三方库的字符,其他的还好说,微信支付和微信分享的时候,都有com.tencent.xin
字符串,经过网上查询,微信可以用下面的字符串pay
判断,还有下面的QQ的判断,application:(UIApplication *)application handleOpenURL:(NSURL *)url
ios9之前用的这个方法。
(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
NSLog(@"openUrl:%@ options:%@ ",url,options);
NSString *urlStr = [options objectForKey:@"UIApplicationOpenURLOptionsSourceApplicationKey"];
if ([urlStr isEqualToString:@"com.tencent.xin"])
{
if ([[url absoluteString] containsString:@"pay"]) {
// 微信支付
[WXApi handleOpenURL:url delegate:self];
} else {
//微信分享
[JSHAREService handleOpenUrl:url];
}
}
if ([urlStr isEqualToString:@"com.alipay.iphoneclient"])
{
__weak typeof(self) wself = self;
// 支付宝支付
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic){
[wself processPayResult:resultDic];
NSLog(@"Alipay success : result = %@",resultDic);//返回的支付结果
}];
}else if ([url.host isEqualToString:@"safepay"]) {
__weak typeof(self) wself = self;
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
[wself processPayResult:resultDic];
NSLog(@"result = %@",resultDic);
}];
}
//QQ分享
if ([urlStr isEqualToString:@"com.tencent.mqq"]) {
[JSHAREService handleOpenUrl:url];
}
return YES;
}