# 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