# NativeH5Map **Repository Path**: indoorNavigation/NativeH5Map ## Basic Information - **Project Name**: NativeH5Map - **Description**: No description available - **Primary Language**: Objective-C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-06-25 - **Last Updated**: 2025-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 集成说明 ### 项目介绍 通过APP展示H5,本demo主要包含app与h5交互:展示H5、js调用APP蓝牙和GPS状态、APP传人js扫描iBeacon数据等。 (SDK内初始化webView会内置window.zs方法,H5中可以据此判断是否支持此SDK) ### 代码集成(A/B二选一) A. 快速免配置集成:拷贝WebSDK.h/.a文件到项目 ``` IndoorWebViewController *webVC = [IndoorWebViewController createWebViewController:_url]; [YourNavigationVC pushViewController:webVC animated:YES]; //刷新或修改已有url [webVC.webSDK refreshUrl:nil]; ``` B. 自定义webview配置集成:拷贝WebSDK.h/.a文件到项目,参考CustomWebVC.h/m(功能细节配置,可以参见附①) ``` WKWebViewConfiguration *cfg = [[WKWebViewConfiguration alloc] init]; cfg.allowsInlineMediaPlayback = YES; if (@available(iOS 13.0, *)) { cfg.defaultWebpagePreferences.preferredContentMode = WKContentModeMobile; } _webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:cfg]; [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[WebSDK urlEncode:_urlStr]]]]; [self.view addSubview:_webView]; //_webSDK请使用属性持有 //注入定位、导航、响应js交互window.zs.call("{action:\"test\",data:\"\"}") _webSDK = [[IndoorWebSDK alloc] initWithWebView:_webView]; //自定义APP<=>H5交互示例: //页面js调用:window.zs&&zs.call(JSON.stringify({action:'test',data:'string or obj',callback:'appCall'}));window.appCall=function(res){ alert(res); }; //SDK 响应示例: [sdk setOnJSCall:^(NSString * action,id data, void (^callback)(NSString *)) { if([action isEqualToString:@"test"]) { NSLog(@"%@",data); callback(@"test callback."); } }]; ``` ### plist权限配置(必要) ###### 必要权限配置(至少允许使用期间定位权限,蓝牙状态获取权限) ``` NSLocationWhenInUseUsageDescription 需要精确位置才能室内外定位导航 NSBluetoothPeripheralUsageDescription 获取蓝牙状态通知 ``` ###### 以下(摄像头权限,录音权限)按项目所需可选(建议加上,H5可能扩展功能使用相关权限) ``` NSCameraUsageDescription 获取相机进行实景导航 NSMicrophoneUsageDescription 进行语音搜索服务 ``` ###### 注意1:如果h5地址不是https,请务必配置plist(也可通过配置白名单方式): ``` NSAppTransportSecurity NSAllowsArbitraryLoads ``` ### 附① ###### SDK内部功能介绍: - 1、初始化WKWebView容器,并设置JS交互。 - 2、允许Web页面调用显示摄像头画面cfg.allowsInlineMediaPlayback=true; - 3、继承navigationDelegate和UIDelegate,识别三方APP的跳转和实现js的alert系列方法 - 4、修改IOS13之后,iPad会默认以PC方式展示网页,强制设置为iPad模式。 cfg.defaultWebpagePreferences.preferredContentMode = WKContentModeMobile; - 5、webView意外白屏后,自动重新reload - 6、支持本地file,使用URLForResource,fileURLWithPath