当前位置: 首页 > news >正文

公司想建一个网站找谁做电脑做网站服务器改端口

公司想建一个网站找谁做,电脑做网站服务器改端口,网站 图片防盗链,新手如何做企业网站[toc] 背景介绍 一般情况下#xff0c;出于省电、权限、合理性等因素考虑#xff0c;给人的感觉是很多奇怪的需求安卓可以实现#xff0c;但是iOS就无法实现#xff01;今天要介绍的需求也有这种感觉#xff0c;就是“当 APP 处于后台或锁屏状态时#xff0c;依旧可以监听…[toc] 背景介绍 一般情况下出于省电、权限、合理性等因素考虑给人的感觉是很多奇怪的需求安卓可以实现但是iOS就无法实现今天要介绍的需求也有这种感觉就是“当 APP 处于后台或锁屏状态时依旧可以监听到摇一摇进而触发某些功能比如语音播报”。 在产品经理提出此需求的一瞬间仿佛周边的空气都凝固了我也犹如五雷轰顶愣在原地无法动弹。不由心想“苹果爸爸怎么可能允许开发者实现这种功能这得多费电啊要是所有 APP 都这么做了那还了得” 与此同时之前网上疯传、远近闻名的的需求--“做一个会根据手机壳颜色而改变主题颜色的APP”清晰地浮现在脑海中顿时一万只xx 从心中奔腾而过。此时产品经理解释到这是咱们好多视力障碍用户提的需求他们经常锁屏或把 APP 退到后台且因为视力不佳原因导致重新找到 APP 并切到前台的操作很是麻烦所以十分希望我们能实现这个功能。 在短暂的心理活动后秉着“客户第一产品 ”的原则于是回复说“这功能太少见了我先在网上看看吧要是有其他 APP 有类似的功能麻烦跟我说我参考一下。”然后就祭出了程序员利器--Google输入“iOS 后台 摇一摇”只搜索出来的一个思路利用 CoreMotion 框架监听加速计原始数据然后在 APP 退到后台后可以实现监听摇一摇的效果。然而并没有完整的代码或 demo 。顿时Talk is cheap, show me the code!这句经典台词突然地出现在脑海中也看到有人评论说 CoreMotion 的确可以实现跟系统摇一摇类似的效果但是退到后台或锁屏后没办法监听到摇一摇事件。 看到这条评论时我不禁开始怀疑此功能是否真的可以被实现。 玩归玩闹归闹开始 code不开玩笑。 接下来开始自己的探索之旅。 本文 demo 链接为 OCDailyTests/BackgroundShakeTest可自行下载方便运行和验证。 探索过程 其他 APP 有没有类似功能 经过一番 Google终于找到一款 APP 有类似功能酷狗音乐 APP对就是那个在 PC 端一打开就会大喊 Hello KuGou!的音乐软件对应的 APP万万没想到手机 APP 也是这样一句Hello KuGou!把我吓一跳。按如下步骤在设置里打开此功能后后台或锁屏时摇一摇手机可实现切歌的效果。 既然的确有 APP 实现了此功能那就踏踏实实地探索它可能是怎么实现的吧。 系统提供的摇一摇回调能否满足 系统摇一摇回调方法 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{NSLog(%s, __FUNCTION__);} 经测试此方法只有在 APP 处于前台时才会被回调。APP 处于后台或锁屏时此方法不会回调。故初步判定此方法不能满足需求。 ##其他方法能否实现 此时还是先根据网上各路大神提供的思路进行尝试即利用 CoreMotion 框架监听加速计原始数据然后在 APP 退到后台后实现监听摇一摇的效果。 好我们先利用 CoreMotion 框架监听加速计原始数据实现类似系统摇一摇回调的效果。 利用 CoreMotion 框架监听加速计原始数据 通过加速计监听摇一摇 因加速计回调比较频繁因此比较占用资源故把此功能设计为单例。 快速实现单例效果 //具体实现详见 demo 中文件#import HMSingleton.hinterface MYAccelerometerTool : NSObject HMSingleton_h(MYAccelerometerTool); endimplementation MYAccelerometerTool HMSingleton_m(MYAccelerometerTool); end声明和懒加载运动管理员属性 property(nonatomic, strong) CMMotionManager *gMotionMnger;- (CMMotionManager *)gMotionMnger{if (nil _gMotionMnger) {CMMotionManager *lMnger [[CMMotionManager alloc] init];lMnger.accelerometerUpdateInterval 0.1;[lMnger startAccelerometerUpdates];_gMotionMnger lMnger;}return _gMotionMnger; }声明和实现时间戳属性用于实现节流效果为防止频繁回调每次检测成功后停止摇动 1s 后才继续响应下次摇一摇。 property(nonatomic, strong) NSDate *gDateLastShakeSuc; - (NSDate *)gDateLastShakeSuc{if (nil _gDateLastShakeSuc) {_gDateLastShakeSuc [NSDate distantPast];}return _gDateLastShakeSuc; }开始监听摇一摇动作 - (BOOL)startMonitorShake{if (NO self.gMotionMnger.isAccelerometerAvailable) {return NO;}//监听中直接返回YESif (self.gMotionMnger.isAccelerometerActive) {return YES;}[self.gMotionMnger startAccelerometerUpdatesToQueue:[NSOperationQueue new] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {CMAcceleration acceleration accelerometerData.acceleration;//综合x、y两个方向的加速度z方向速度无意义用的话走路上下抖手机时会误触发系统摇一摇也不会被z轴加速度触发//当综合加速度大于2.3时就激活效果数据越小用户摇动的动作就越小越容易激活double accelerameter sqrt( pow( acceleration.x , 2 ) pow( acceleration.y , 2 ));if (accelerameter 2.3) {//节流效果距离上次摇一摇成功事件间隔时间小于1s时认为无效NSDate *lCrtDate [NSDate date];if ([lCrtDate timeIntervalSinceDate:self.gDateLastShakeSuc] 1) {self.gDateLastShakeSuc lCrtDate;return ;}self.gDateLastShakeSuc lCrtDate;[[NSNotificationCenter defaultCenter] postNotificationName:KNTFY_SHAKE_SUCCESS object:nil];}}];return YES; }为了代码的对称美和可能的相关业务实现停止监听摇一摇方法 - (void)stopMonitorShake{[self.gMotionMnger stopAccelerometerUpdates];self.gMotionMnger nil;self.gDateLastShakeSuc nil; }控制器相关逻辑和代码 开始监听摇一摇 BOOL lRes [[MYAccelerometerTool sharedMYAccelerometerTool] startMonitorShake];NSLog(lRes:%d, lRes);NSAssert(lRes, 开始监听摇一摇失败);监听摇一摇成功的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:selector(nmShakeSuccess:) name:KNTFY_SHAKE_SUCCESS object:nil];//在摇一摇的同时通过观察此方法是否有log可以判断是否有监听到。 - (void)nmShakeSuccess:(NSNotification *)ntfy{NSLog(%s, __FUNCTION__); }dealloc方法中取消监听 - (void)dealloc{[[NSNotificationCenter defaultCenter] removeObserver:self]; }运行 demo 工程测试可知通过上述方法的确可以在 APP 处于前台时实现监听摇一摇动作的效果。可是当把 APP 退到后台或锁屏时nmShakeSuccess 方法不再有 log即APP 处于后台时通过监听加速计的方法默认也无法在 APP 处于后台或锁屏时实现监听效果。这也印证了上文提到的那个评论者的疑问。 可是 Hello KuGou 明明实现了后台或锁屏时摇一摇的效果啊难道是需要额外的配置联想 iOS 处于后台时默认会把 APP 的服务给挂起suspended,只有当 APP 通过某种方式后台定位/播放音乐/蓝牙扫描等具有后台运行权限时才可以一直保活。可猜想也许赋予 APP 具有后台运行的权限后就可以实现想要的功能了。于是开始进行验证如下。 APP 申请后台运行权限后能否监听到摇一摇 因为工作中很多 APP 具有后台定位权限和相关功能所以本文通过为 APP 申请后台定位权限来验证。 APP 申请后台定位权限 plist 文件中增加”定位请求描述信息“ keyNSLocationAlwaysUsageDescription/keystring我们需要根据您的定位提供周边搜索和导航服务/stringkeyNSLocationWhenInUseUsageDescription/keystring我们需要根据您的定位提供周边搜索和导航服务/string增加”后台定位权限“ keyUIBackgroundModes/keyarraystringlocation/string/array声明定位管理员属性 property(nonatomic, strong) CLLocationManager *gMnger;懒加载定位管理员请求定位权限、允许后台位置更新 - (CLLocationManager *)gMnger{if (nil _gMnger) {_gMnger [[CLLocationManager alloc] init];_gMnger.delegate self;_gMnger.allowsBackgroundLocationUpdates YES;[_gMnger requestWhenInUseAuthorization];}return _gMnger; }代理 3 步走用于验证后台定位是否生效 遵守代理协议 interface ViewController ()CLLocationManagerDelegate 指定代理对象 _gMnger.delegate self; 实现代理方法 #pragma mark - delegate - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArrayCLLocation * *)locations{NSLog(%s, __FUNCTION__); }- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{NSLog(%s, __FUNCTION__); }APP 后台或锁屏后测试能否成功监听摇一摇 运行 demo 工程经测试把 APP 退到后台或锁屏或即退到后台又锁屏都能够检测到摇一摇事件。 多 APP 都实现此功能时摇一摇是何效果 这里用 demo APP 和酷狗音乐 APP 进行测试。 同时打开这两个 APP其中酷狗音乐 APP 打开后台摇一摇切歌的功能。酷狗音乐 APP 开始放歌退到后台。demo APP 打开后退到后台。摇一摇查看效果当摇动的力度不是很大时demo APP 回调方法会被触发当摇动的力度很大时demo APP 回调方法和酷狗 APP 切歌会同时被触发由此可见如果多个 APP 同时实现了此功能时那么后台或锁屏摇一摇时只要满足了某个 APP 实现的加速计相关判定条件就可以同时触发多个 APP 对应的效果。后台定位权限 系统摇一摇是否可行 经测试还是不行。果然系统摇一摇还是比较受限的只能在前台回调。 文章小结 想要实现”iOS后台锁屏监听摇一摇“功能 首次必须满足一个硬性条件APP 具有某种后台运行的权限。 其次技术实现上必须使用CoreMotion框架通过监听加速计回调自己实现对摇一摇事件的监听判定。 最后可通过增加时间属性实现对摇一摇事件监听时的节流效果防止持续摇动时太过频繁的事件回调。 此外多 APP 都实现此功能时摇一摇的效果是只要摇动力度很大加速计数据满足 APP 实现的摇一摇判定条件就可以同时触发多个 APP 各自对应的效果。 因此如果不是 APP 特别需要此功能尽量不要这样实现毕竟比较占用系统资源而且太多 APP 同时实现时可能会出现效果上的相互干扰。不过如果合理利用此功能却可以为特殊用户群体提供极大的便利 通过探索满足了视力障碍用户的迫切需求还是蛮有成就感的 偷偷的告诉大家写到这里时产品经理还没告诉我他所知道的哪个 APP 实现了这个功能可能他太忙给忘记了吧...... 参考文章 iOS应用退出到后台后怎样监听摇晃事件 Demo 链接 OCDailyTests/BackgroundShakeTest 最后感谢“技术创作101训练营”通过参加训练营让我对写作有了更深入的认识和更高的心里觉悟。 本文由博客群发一文多发等运营工具平台 OpenWrite 发布
http://www.huolong8.cn/news/31914/

相关文章:

  • 山东公路建设集团网站大商创官网
  • 山东住房建设部官方网站昆明凡科建站公司
  • app网站建设 - 百度装修效果图在线设计
  • 青岛做网站建设的公司排名常州网站网站建设
  • 网站开发设计心得vs2010 iis 网站开发
  • 申请注册网站域名.商城开发网站的空间分录
  • php mysql网站开发实例教程油边机 东莞网站建设
  • 代做网站地图电子商务网站建设与管理教材评价
  • 成都隆昌网站建设asp网站程序
  • 我要用新浪云做网站网页制作技术有哪些
  • 做网站与做网页的区别wordpress百度联盟
  • 网站做seo多少钱网站备案提示
  • 青岛网站seo技巧物流公司网站模版
  • 网站备案授权码深圳网站建设 龙华信科咨询
  • 建设com网站国外浏览器搜索引擎入口
  • 大学生兼职做网站广州全网推广
  • 网站设计标题php小说采集网站源码
  • 做行业网站如何采集信息二手网站建设方案
  • 做电器的集团网站新型建站技术
  • 五莲网站建设维护推广做3d兼职网站
  • 游民星空是用什么做的网站怎样自己建立一个网站
  • iis配置网站无法访问建工类培训机构
  • 简单网站制作代码免费简历模板下载word可编辑
  • 营销型网站建设教学网站支付页面怎么做的
  • 网站公司上海静态网页设计制作实训报告摘要
  • 合肥网站制作费用企业网站推广
  • php网站广告管理系统wordpress换背景插件
  • 专业的网站建设价格低增城网站公司电话
  • 深圳模板建站多少钱石家庄网站开发哪家好
  • 番禺网站开发公司站开发技术培训