🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 简要介绍 该库为外链功能模块,主要包含web调用部分原生组件、微信支付、支付宝支付等,具体可实现功能可查看前端文档,可在 ~~~ http://192.168.0.116/monkey/iOS-URLink.git ~~~ 下载示例代码,然后运行查看效果。 ## 导入方式 #### 使用Cocoapods导入 要使用该库,需要依赖基础模块,在Podfile文件中加入: ~~~ platform :ios, '7.0' target 'Test' do pod 'SDWebImage', '~> 3.8.2' pod 'iOS-URAlert', :git => 'http://192.168.0.116/monkey/iOS-URAlert.git' pod 'iOS-URLoadIndicator', :git => 'http://192.168.0.116/monkey/iOS-URLoadIndicator.git' pod 'iOS-URBaseMacros', :git => 'http://192.168.0.116/monkey/iOS-URBaseMacros.git' pod 'iOS-URNetworking', :git => 'http://192.168.0.116/monkey/iOS-URNetworking.git' pod 'iOS-URLink', :git => 'http://192.168.0.116/monkey/iOS-URLink.git' end ~~~ 然后在终端执行命令: ~~~ $ pod install ~~~ 或者 ~~~ $ pod update ~~~ #### 手动导入 手动导入还需要手动添加第三方库: ~~~ AFNetworking (3.1.0) ReactiveCocoa (2.5) Masonry (1.0.2) MJRefresh (3.1.12) SDWebImage (3.8.2) iOS-URAlert iOS-URLoadIndicator iOS-URBaseMacros iOS-URNetworking ~~~ ## 使用说明 使用该库需要重置用户代理,在AppDelegate中设置: ~~~ #pragma mark 重置 webview 的 user agent(用户代理) - (void)reviseUseragent { UIWebView *webView = [[UIWebView alloc] init]; NSString *secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; NSString *newUseragent = [NSString stringWithFormat:@"%@ termtype/%@",secretAgent,@"rubikui"]; NSDictionary *dictionary = @{@"UserAgent":newUseragent}; [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; } ~~~ 同时需要使用支付的还需在AppDelegate中做如下设置: ~~~ - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { id viewController = [G_RootViewController.navigationController.viewControllers lastObject]; if (viewController && [viewController isKindOfClass:[UIViewController class]]) { } else { viewController = nil; } return [WXApi handleOpenURL:url delegate:viewController]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { if ([url.host isEqualToString:@"safepay"]) { //跳转支付宝钱包进行支付,处理支付结果 [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"result = %@",resultDic); [self handleAlipayAction:resultDic]; }]; return YES; } else { id viewController = [G_RootViewController.navigationController.viewControllers lastObject]; if (viewController && [viewController isKindOfClass:[UIViewController class]]) { } else { viewController = nil; } return [WXApi handleOpenURL:url delegate:viewController]; } } // NOTE: 9.0以后使用新API接口 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options { if ([url.host isEqualToString:@"safepay"]) { //跳转支付宝钱包进行支付,处理支付结果 [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"result = %@",resultDic); [self handleAlipayAction:resultDic]; }]; return YES; } else { id viewController = [G_RootViewController.navigationController.viewControllers lastObject]; if (viewController && [viewController isKindOfClass:[UIViewController class]]) { } else { viewController = nil; } return [WXApi handleOpenURL:url delegate:viewController]; } } - (void)handleAlipayAction:(NSDictionary *)resultDic { id viewController = [G_RootViewController.navigationController.viewControllers lastObject]; if (viewController && [viewController isKindOfClass:[URLinksViewController class]]) { [((URLinksViewController *)viewController) handleAlipayResult:resultDic]; } } ~~~ 为了支付完成之后能够跳转回app,需要设置在工程的 TARGETS->Info中设置相应的URL Types。 #### 外链功能接口 该库主要包含如下接口: ~~~ @property (nonatomic,copy) NSString *linkUrl; //链接地址 @property (nonatomic,assign) URLinksBackType backType; //外链首页返回按钮类型 @property (nonatomic, copy) NSString *defaultTitle; //默认标题,如果网页没有给出,显示该标题 @property (nonatomic, strong) NSDictionary *userInfo; //推送返回的信息 //userinfo为推送的相关信息 - (void)evaluatingJavaScriptWithUserinfo:(NSDictionary *)userinfo; ~~~ 在需要接入外链的地址直接调用即可,如下所示: ~~~ URLinksViewController *viewController = [[URLinksViewController alloc] init]; viewController.linkUrl = "你的链接地址"; viewController.backType = URLinksBackTypeArrow; [self.navigationController pushViewController:viewController animated:YES]; ~~~