# BRTWebSDK_IOS
**Repository Path**: brtbeacon/BRTWebSDK_IOS
## Basic Information
- **Project Name**: BRTWebSDK_IOS
- **Description**: No description available
- **Primary Language**: Objective-C
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-06-17
- **Last Updated**: 2021-06-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ZSWebSDK
-
##### 项目介绍
通过APP展示H5地图,本demo主要包含app与h5交互:展示H5地图、js调用APP蓝牙和GPS状态、调用IOS系统分享、APP传人js扫描数据等。
## 一、推荐使用CocoaPods集成
直接新建或在已有Profile文件添加库,并pod update即可:
```
pod 'ZSWebSDK'
```
##### 或手动集成文件
1、拷贝本demo内ZSWebSDK文件夹
2、找到 Target -> 'General' -> 'Embedded Binaries', 添加上边拖入的TTLock.framework。
## 二、info.plist权限配置,文字可以自行定义
配置项目Info.plist文件:蓝牙开锁权限、定位权限、实景相机、麦克风使用权限,请自定义描述文字,示例:
```
NSLocationWhenInUseUsageDescription
扫描周边iBeacon定位
NSCameraUsageDescription
开启实景导航
NSBluetoothAlwaysUsageDescription
用于扫描周边服务
NSMicrophoneUsageDescription
用于语音搜索服务
```
## 三、SDK初始化及调用方式示范
初始化webview和url加载,判断是否为brtbeacon链接,再传入当前WKWebView即可,完整示范如下
```
@interface ViewController ()
@property (nonatomic,strong) WKWebView *webView;
@property (nonatomic,strong) ZSWebSDK *webSDK;
@end
- (void)viewDidLoad {
[super viewDidLoad];
WKWebViewConfiguration *cfg = [[WKWebViewConfiguration alloc] init];
//如果项目包含实景导航,配置允许H5显示摄像头
cfg.allowsInlineMediaPlayback = YES;
if (@available(iOS 13.0, *)) {
cfg.defaultWebpagePreferences.preferredContentMode = WKContentModeMobile;
}
//初始化webview以及加载URL
_webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:cfg];
[self.view addSubview:self.webView];
NSString *url = @"https://请注意一般需要https链接";
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
//
//添加判断URL链接内容是否包含:brtbeacon,包含即使用ZSWebSDK处理webView。
if ([url rangeOfString:@"brtbeacon"].length) {
self.webSDK = [[ZSWebSDK alloc] initWithWebView:self.webView];
//或使用类方法:[ZSWebSDK setupWebView:self.webView];
}
}
```
### 注意:如果上传到App Store遇到[unsupported architectures]
--

问题详情介绍参见 [Stripping Unwanted Architectures ](http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/)
需要在target -> Build Phases添加Run Script,复制以下代码并在XCode的Run Script下方+号添加Input Files(如本示例TTLock.framework在项目根目录直接填写$(SRCROOT)/TTLock.framework,因为提供的库是支持i386、x86_64 、armv7、 arm64的动态库,上传到App Store,需要去除i386、x86_64模拟器版本库,要不然会报错。)
```
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: "
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
```
### 更新日志
2021.06.21
添加H5打开实景导航功能,优化多UUID扫描逻辑
2020.11.30
修正蓝牙开锁SDK导致IOS14闪退
2019.07.10
修正蓝牙开关时候弹窗提示闪退
2019.06.28
添加CocoaPods支持
2019.06.19
新增WebSDK工具类,优化扫描接口
2019.03.29
新增实景代码,需新增相机权限NSCameraUsageDescription和修改WebVC类
2018.10.12
重新编译TTLock.framework,启用bitcode
2018.9.20
修正钥匙链接
2018.9
添加APP开锁代码:LockManager类
添加js alert等支持
添加detail接口