鹰眼ios sdk v3.0及以上版本支持所有的模拟器和真机cpu架构,开发者可以使用lipo命令,根据自身的需要合成自己所需的sdk。
可以直接使用鹰眼ios sdk进行开发测试,但是上架到app store时,由于苹果公司的要求,只能使用真机对应cpu架构的sdk,所以需要开发者使用lipo命令合成自身需要的cpu架构版本的sdk。lipo命令的使用方法如下:
输入命令:
lipo -info ./baidutracesdk.framework/baidutracesdk
终端回显:
architectures in the fat file: ./baidutracesdk.framework/baidutracesdk are: i386 x86_64 armv7 armv7s arm64
输入命令:
lipo -info ./arm64/baidutracesdk
终端回显:
non-fat file: ./arm64/baidutracesdk is architecture: arm64
输入命令:
lipo -info ./armv7/baidutracesdk
终端回显:
non-fat file: ./armv7/baidutracesdk is architecture: armv7
输入命令:
lipo -info ./arm64/baidutracesdk
终端回显:
non-fat file: ./arm64/baidutracesdk is architecture: arm64
输入命令:
lipo -info ./armv7/baidutracesdk
终端回显:
non-fat file: ./armv7/baidutracesdk is architecture: armv7
输入命令:
lipo -create ./armv7/baidutracesdk ./arm64/baidutracesdk -output ./baidutracesdk.framework/baidutracesdk
输入命令:
rm -rf ./arm64rm -rf ./armv7
输入命令:
lipo -info ./baidutracesdk.framework/baidutracesdk
终端回显:
architectures in the fat file: ./baidutracesdk.framework/baidutracesdk are: armv7 arm64
选择需要的target,将 baidutraceksdk.framework 拖入其general选项卡中的embedded binaries栏即可。拖入之后linked framework and libraries栏也会显示 baidutracesdk.framework 项,同时检查 build phases 选项卡中的 embed frameworks 栏和 link binary with libraries 栏也都显示成功导入 baidutracesdk.framework 项。
app在声明定位权限时(用作appstore上架审核),自鹰眼ios sdk v3.1.1版本开始支持开发者声明“仅需要前台定位”或“同时需要前台和后台定位”,结合最终用户定位权限授予情况,两种声明均可实现鹰眼轨迹的采集,两者不同之处在于:
1. 声明仅需前台定位:若最终用户授权app定位权限(允许一次/使用app期间/始终),此时app在前台时鹰眼可成功采集轨迹,但app退到后台时app被杀死可能性较高,易造成轨迹中断。仅声明前台定位权限需在info.plist文件源码中增加以下声明:
<key>nslocationwheninuseusagedescription</key><string>文字阐述需要前台定位的原因</string>
2. 声明同时需要前台和后台定位:若最终用户授权app定位权限为“始终”时,不论app在前台还是后台,app被杀死概率较低,这种方式可尽量保证轨迹采集不中断。若最终用户授权app定位权限为“允许一次/使用app期间”时,app在前台时鹰眼可成功采集轨迹,退到后台时app被杀死可能性较高,易造成轨迹中断。同时声明前台和后台定位权限需在info.plist文件源码中增加以下声明:
<key>nslocationwheninuseusagedescription</key><string>文字阐述需要前台定位的原因</string><key>nslocationalwaysandwheninuseusagedescription</key><string>文字阐述需要后台定位的原因</string><key>nslocationalwaysusagedescription</key><string>文字阐述需要后台定位的原因</string><key>uibackgroundmodes</key><array><string>location</string></array>
开发者需结合plist文件中的配置申请相应的定位权限:
-(void)requestlocauthbyplist {nsbundle*bundle =[nsbundle mainbundle];nsobject*accesstypealways =[bundle objectforinfodictionarykey:@"nslocationalwaysusagedescription"];nsobject*accesstypewhen =[bundle objectforinfodictionarykey:@"nslocationwheninuseusagedescription"];nsobject*accesstypeboth =[bundle objectforinfodictionarykey:@"nslocationalwaysandwheninuseusagedescription"];if(accesstypealways && accesstypewhen && accesstypeboth){// 申请前后台定位权限[self.locationmanager requestalwaysauthorization];}elseif(accesstypewhen){// 申请前台定位权限[self.locationmanager requestwheninuseauthorization];}}
1.用户关闭准确位置权限情况下,使用鹰眼服务前开发者可以根据需求选择申请临时精确位置权限:
#pragma mark -cllocationmanagerdelegate/// 适配ios14#ifndef __iphone_14_0#define __iphone_14_0 140000#endif#if __iphone_os_version_max_allowed >= __iphone_14_0//监听定位权限状态改变,及时采取合理措施-(void)locationmanagerdidchangeauthorization:(cllocationmanager*)manager {if(@available(ios 14.0,*)){nsobject*temporaryusagedescription =[[nsbundle mainbundle] objectforinfodictionarykey:@"nslocationtemporaryusagedescriptiondictionary"];if(temporaryusagedescription && self.locationmanager.accuracyauthorization==claccuracyauthorizationreducedaccuracy){// ios14之后根据产品需求申请临时访问精确位置权限// 1.在info.plist配置//nslocationtemporaryusagedescriptiondictionary ////wantstotrace //鹰眼需要高精度定位权限 //// 2.申请权限[self.locationmanager requesttemporaryfullaccuracyauthorizationwithpurposekey:@"wantstotrace"completion:^(nserror* _nullable error){nslog(@"%@", error);}];}}else{// fallback on earlier versions}}#endif
2. 启用后台位置指示器,进入后台时保留被授予的临时访问权限(精确位置):
//需要在开始采集前设置[[btkaction sharedinstance] showsbackgroundlocationindicator:yes];[[btkaction sharedinstance] startgather:self];
为避免这种情况,开发者需要在上架的描述信息中说明清楚,是app的哪些特性和功能必须要使用后台定位权限。
上一篇
下一篇
本篇文章对您是否有帮助?