部网络货运信息交互系统位置信息上报
设置允许 HTTP 请求访问
创建配置文件 android/app/src/main/res/xml/network_security_config.xml
内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
修改配置 android/app/src/main/AndroidManifest.xml
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
+ android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme">
</application>
修改 ios/<应用名称>/Info.plist
配置
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Android 配置高德地图 key
example/android/app/src/main/AndroidManifest.xml
<meta-data android:name="com.amap.api.v2.apikey" android:value="{你的高德key}" />
iOS: ⚠️ GMObjC 只支持 ARM64 的架构
GMObjC 里面用到的 OpenSSL
配置 armv7
有问题,GMObjC.framework
动态包也是只支持 ARM64
设置 Xcode
-> Targets
-> 项目名称
-> Build Settings
-> Architectures
值为 arm64
- 2019 A13芯片arm64e:iphone11、iphone11 Pro
- 2018 A12芯片arm64e:iphone XS、iphone XS Max、iphoneXR
- 2017 A11芯片arm64:iPhone 8、iPhone 8 Plus、and iPhone X
- 2016 A10芯片arm64:iPhone 7、7 Plus、iPad (2018)
- 2015 A9芯片arm64:iPhone 6S、6S Plus
- 2014 A8芯片arm64:iPhone 6、iPhone 6 Plus
- 2013 A7芯片arm64:iPhone 5S
- armv7s:iPhone5、iPhone5C、iPad4(iPad with Retina Display)
- armv7:iPhone4、iPhone4S、iPad、iPad2、iPad3(The New iPad)、iPad mini、iPod Touch
lipo -info GMObjC.framework/GMObjC
# Non-fat file: GMObjC.framework/GMObjC is architecture: arm64
iOS: 端需要开启始终定位
example/ios/<项目名称>/Info.plist
iOS 11 版本:
NSLocationAlwaysAndWhenInUseUsageDescription
申请Always权限,以便应用在前台和后台(suspend 或 terminated)都可以获取到更新的位置数据(NSLocationWhenInUseUsageDescription
也必须有)。
NSLocationWhenInUseUsageDescription
、NSLocationAlwaysUsageDescription
和NSLocationAlwaysAndWhenInUseUsageDescription
权限申请。
<key>NSLocationWhenInUseUsageDescription</key>
<string>使用期间定位,以便获取位置信息</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>持续定位,以便获取行驶路线</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>持续定位,以便获取行驶路线</string>
iOS: bitcode bundle could not be generated because,编译报错不支持 bitcode
bitcode 简单说就是编程语言与计算机可以直接执行的机器语言之间的中间码。苹果为了减少包的大小,打包时会将项目编译成 bitcode,上传给 App Store,用户下载时,bitcode 可以根据机型版本,生成不同的包去适配。大概就是这么个意思,具体内容请戳这里。
Xcode7 开始,新建项目默认就打开了 bitcode
设置。而且大部分开发者都被这个突如其来的 bitcode
功能给坑过导致项目编译失败,这些因为 bitcode
而编译失败的的项目都有一个共同点,就是链接了第三方库或者框架,而这些框架或者库不支持 bitcode
,从而导致项目编译不成功。
解决方案有两种(目前只有第二种解决方案):
- 联系第三方框架
MapManager.framework
的提供者,让他们支持bitcode
,这个执行起来有难度。 - 关闭
bitcode
功能;在 xcode 里把TARGETS
->Build Setting
->Build Options
->Enable Bitcode
设置为NO
;
ld: bitcode bundle could not be generated because '******/react-native-transport-location/ios/MapManager.framework/MapManager(MapService.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
⚠️ 高德地图定位部分 API 需要真机调试和Access WiFi Information
权限。- 适用于
react-native
>= 0.60+
低版本未测试。- 支持手机系统:iOS(苹果)、Android(安卓)。
- 需要设置允许 HTTP 请求访问
- React Native 带的自带的包 OpenSSL-Universal 与 GMObjC 自带的 GMOpenSSL 冲突 已解决 #1
yarn add @uiw/react-native-transport-location
# react-native version >= 0.60+
$ cd ios && pod install
- init
- start
- end
当前工程基于 @brodybits/create-react-native-module 初始化。
npx create-react-native-module --package-identifier com.uiwjs.react.transport.location --object-class-name RNTransportLocation --generate-example TransportLocation --example-react-native-version 0.63.3 --module-name @uiw/react-native-transport-location --github-account uiwjs --author-name "Kenny Wong" --author-email "wowohoo@qq.com"
cd example # 进入实例 example 工程,根目录不需要安装,会引发错误
yarn install # 安装依赖
cd ios # 进入 example/ios 目录安装依赖
pod install # 安装依赖