本文章仅提供unity的ios项目接入我们公司的wap的思路。
接入我们公司的wap有两种情况,只是传入的参数不同:
1、接入wap支付(将最后生成的url传入到oc,用oc的webview拉起支付)
2、接入带内购的wap支付(将最后生成的url、是否使用内购的bool值传入到oc中,由oc代码拉起我们公司的支付或者是苹果内购。)
一、怎样将unity内的参数传递给oc
1、创建一个oc的.mm文件,例如BonjourClientlmpl.mm,里面写入一个c语言的函数,可以通过这个c语言函数作为中间层,来达到沟通oc与unity的目的,如下代码:
#import"BonjourClientImpl.h"
#import"MD5.h"
#import"JHShare.h"
#import"JFTWebViewController.h"
@interfaceNetServiceBrowserDelegate()
@end
@implementationNetServiceBrowserDelegate
- (void)openInWebViewWithUrl:(NSString *)url{
JFTWebViewController *webVc = [JFTWebViewControllernew];
UINavigationController*nav = [[UINavigationController alloc] initWithRootViewController:webVc];
UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;
[vc presentViewController:nav animated:YEScompletion:^{
[webVc loadWithUrl:url];
}];
}
@end
extern"C"{
void_jftPay (constchar* payType,constchar*url)
{
NSString *payTypeStr = [NSString stringWithFormat:@"%s",payType];
NSString *urlStr = [NSString stringWithFormat:@"%s",url];
if([payTypeStr isEqualToString:@"12"]) {
NetServiceBrowserDelegate *instance = [NetServiceBrowserDelegatenew];
[instance openInWebViewWithUrl:urlStr];
return;
}
JHShare *tool=[JHShare shareInstance];
tool.openComplete = ^(BOOLstatus){
dispatch_async(dispatch_get_main_queue(), ^{
if(status) {
NSLog(@"打开app成功");
}else{
NSLog(@"打开app失败");
}
});
};
[tool requestWithUrl:urlStr];
}
}
2、在unity的Assets文件目录里面,有个Plugins文件,一般将安卓或者ios平台的资源包都放到这个文件中。在里面创建一个ios的文件夹,将1所创建的BonjourClientlmpl.mm放到里面来,如果该文件还需要其他的sdk或者文件资源,一并拖到这里面。
3、在unity中调用BonjourClientlmpl.mm中写的c函数,如void_jftPay,即可以实现传递参数
4、具体oc中如何编写,请参考相应的文档,如何实现内购,可以参考文章。