美文网首页
摇一摇:截屏、反馈(持续改进中...)

摇一摇:截屏、反馈(持续改进中...)

作者: 汝阴龙 | 来源:发表于2017-11-25 10:28 被阅读418次

一、背景:(知乎、BugTags)

1、知乎iOS APP上有个功能,摇一摇反馈。觉得挺好用,自己想实现一个开源的。

(PS:其实知乎用的也是第三方的:Powered by instuBug)

知乎,摇一摇截图-1 知乎,摇一摇截图-2 知乎,摇一摇截图-3

2、网上有个第三方的:BugTags,不过BugTags是一整套:【客户端+服务器端】,使用他们的这个东西,数据是要上传到他们的服务器的。

另外BugTags还有一些缺陷。那就是该反馈功能——如果你是使用的他们的免费版的,功能会有时抽筋——其效果和你在本地代码中设置的不一样——向他们公司的客服询问过,因为其中的几个功能可以在服务器端配置,所以该系统每次随App使用时,都会向服务器请求配置数据,如果网络环境不好或者他们的免费版所在的服务器负载过重的时候,数据不能及时返回,你的本地配置就会抽筋。另外他们的免费版会限制很多功能,某些功能收费还不低。

BugTags-1 BugTags-2 BugTags-3 BugTags-4

二、开发步骤:

1、产品需求:

        a、基本需求:实现摇一摇截图功能;

        b、扩展功能:

             i、 对截图进行编辑、上传(服务器、邮箱、储存到本地)。

             ii、用户可以自定义界面、自定义上传设置(上传到哪里:服务器?邮箱?还是储存到                            本地。)。

2、功能分类:

3、开发步骤:

4、技术解析:

1、核心、精确捕捉到摇一摇事件。捕捉到事件后给出回调:回调方式:block、delegate、NotificationCenter。

2、在摇一摇事件回调中实现下一步操作,这一步操作和上一步和可以分离:低耦合。

3、不能冲突,原有的某个viewController中有特色的摇一摇功能(事件传递路径问题)。

4、全局响应。

5、摇一摇回调——到——截图成功回调——需要登录吗——编辑——反馈——上传。

5、扩展迭代:

1、response类的分层——几个地方都有的。


技术方案:选择及依据——这里你会看到,一个小小的需求能影响到整个技术方案的选型。如果已经做好的东西确实不能满足某个方案,那么只能把该方案全部推翻重做,其工作量是可想而知的。(关键因素:不能冲突,原有的某个viewController中有特色的摇一摇功能(事件传递路径问题));runtime检测当前类中是否有motionBegan等函数,或者event事件传递的hittest。自动检测,或是将要排除的类添加到数组中去。设置开关是否检测。

有关响应者链:(你可以网上搜索,很多例子的,但是自己要甄别)

http://www.jianshu.com/p/2e074db792ba

http://www.cocoachina.com/ios/20160113/14896.html

http://www.cocoachina.com/ios/20160108/14897.html

http://blog.csdn.net/st646889325/article/details/53167715?ref=myread

与此有关的Apple官方文档(UIResponder):

https://developer.apple.com/documentation/uikit/uiresponder?language=objc

https://developer.apple.com/documentation/uikit/understanding_event_handling_responders_and_the_responder_chain?language=objc


运动事件(这里主要关注Shake事件)

CMMotionManager(使用物理硬件):

http://blog.csdn.net/ejialin/article/details/19511897

http://blog.csdn.net/Goods_boy/article/details/70240848

http://blog.csdn.net/SandyLoo/article/details/52692302

http://blog.csdn.net/sw_gegewu/article/details/51361915

MotionEvent(苹果封装好的运动事件):

http://blog.csdn.net/mazy_ma/article/details/51407191

http://blog.csdn.net/aaaa99996666/article/details/51459564

http://blog.csdn.net/haogaoming123/article/details/44856563

http://www.cnblogs.com/eagle927183/p/shakeandcutter.html

CMMotionManager(官方文档):

https://developer.apple.com/documentation/coremotion/cmmotionmanager?language=objc

Github上的资料:

https://github.com/hwzss/Shake_learn

+ (void)load函数相关:

http://www.jianshu.com/p/9368ce9bb8f9

http://www.cocoachina.com/ios/20161012/17732.html

http://liumh.com/2015/07/29/ios-load-and-initialize/#understand-load

目前的一个版本:

请看workplace中的工程shakeMotion。shakeMotion地址。

注意,这并不是一个简单的摇一摇,而是以此为入口,展开的一系列技术细节。

包括:窗口继承层次,Event响应链,controller栈的层次,runtime等等。

相关文章

  • 摇一摇:截屏、反馈(持续改进中...)

    一、背景:(知乎、BugTags) 1、知乎iOS APP上有个功能,摇一摇反馈。觉得挺好用,自己想实现一个开源的...

  • 手机振动,摇一摇,截屏

  • iOS 实现摇一摇截屏功能

    今天领导在群里发了这样一个图 并配上了这样一句话 意图明显,安排~ 实现 经过不那么久的时间研究,发现实现这个小功...

  • iOS摇一摇截屏功能的实现

    1.摇一摇功能的实现: 在viewDidLoad方法中调用: 在viewWillAppear方法中调用: 为了防止...

  • iOS 截屏功能

    截屏-意见反馈 功能

  • iOS 监听用户截屏并获取

    集团考勤最新的意见反馈需求,参照了京东的截屏反馈。重点就是如何监听到 用户触发了系统级的截屏,并获取到当前截屏图片...

  • 本地拒绝服务

    在X项目的截屏反馈SDK中com.meituan.android.screenshot.ScreenShotAct...

  • iOS-高仿微信摇一摇动画效果加震动音效

    众所周知, 微信中的摇一摇功能: 搜索人/歌曲/电视,同样在一些其他类APP中也有一个摇一摇签到, 摇一摇随机选号...

  • 摇一摇

    对于摇一摇功能 iOS 中已经提供了接口.直接调用就好了.实现步骤:1). 监听摇一摇方法 2). 实现下面的方法...

  • 摇一摇

    摇一摇 搅乱一条小河 摇一摇 燃放万家灯火 摇一摇 赶走看不见的心魔 在这里 麻雀叫了一整天 树叶绿了一整天 花儿...

网友评论

      本文标题:摇一摇:截屏、反馈(持续改进中...)

      本文链接:https://www.haomeiwen.com/subject/mnkomxtx.html