Appearance
智石科技 内嵌H5地图 iOS API
简介
智石科技内嵌H5地图 iOS API,通过APP展示智石H5地图:展示H5地图、js调用APP蓝牙和GPS状态、APP传人js扫描iBeacon数据等。
开发指南
集成方式(A/B二选一)
A. 快速免配置集成
拷贝WebSDK.h/.a文件到项目,调用以下代码:
objective-c
UIViewController *webVC = [WebSDK createWebViewController:_urlStr];
[YourNavigationVC pushViewController:webVC animated:YES];
B. 自定义webview配置集成
拷贝WebSDK.h/.a文件到项目,参考CustomWebVC.h/m(功能细节配置,可以参见附录1)
objective-c
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];
//注入定位、导航、响应js交互window.zs.call("{action:\"test\",data:\"\"}")
WebSDK *sdk = [WebSDK setupWebView:_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权限配置(必要)
1、必要权限配置
注意:至少允许使用期间定位权限,蓝牙状态获取权限)
xml
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要精确位置进行室内外定位导航</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>获取蓝牙状态通知</string>
2、非必要权限配置
注意:以下(摄像头权限,录音权限)按项目所需可选(建议加上,H5可能扩展功能使用相关权限)
xml
<key>NSCameraUsageDescription</key>
<string>获取相机进行实景导航</string>
<key>NSMicrophoneUsageDescription</key>
<string>进行语音搜索服务</string>
3、非HTTPS配置
注意:如果h5地址不是https,请务必配置plist(也可通过配置白名单方式):
xml
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
附录1 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
关于
商务合作、地图绘制咨询 4000-999-023