Skip to content

智石科技 内嵌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

关于