@(工作)[视频, ijkplayer, 编码]

由来

从接手做第一个版本到现在我们为加快首屏加载速度做过两次优化,到当前本基本上完成了视频秒开的目标。其实当知道加载速度慢的原因后最终的修改其实没什么复杂的,复杂的是分析原因的过程,这里主要分享一下从一开始的外部表现,逐步分析原因,到最终得到优化方案,验证优化成果的流程。希望这个过程也能给其他项目提供一些借鉴。

优化方法

  • 明确优化目标
    • 1s内实现用户点击房间到首帧渲染完成
  • 自顶向下分析:
    • 操作流程分解,找到流程中的问题;
    • 逐步向底层深入,分析性能瓶颈;
    • 得出优化方案
    • 数据验证结果
阅读更多 →

——易用性和可扩展性

by bupo.

这里通过实现一个弹出菜单控件为例。弹出菜单如图所示,菜单可以有多行,每一行有多个选项,每一行可能有个标题,每行有多个选项,如果选项个数超过屏幕范围可以左右滑动。点击选项执行对应的功能模块。这里把这个控件命名为ScrollActionSheet。

阅读更多 →

by bupo.

简介

在终端应用开发过程中经常需要在H5页面中调用原生接口来使用原生服务,所以就有了Javascript与原生代码交互的需求,这里终结一下以前在项目中使用的一种解决方案。 原理很简单,通过在UIWebView的代理中截获window.location.href 跳转请求来响应Javascript请求,并通过UIWebview 提供的执行JS代码的接口stringByEvaluatingJavaScriptFromString 将原始执行结果回调给H5页面。

阅读更多 →

最近参加的一个项目需要完全支持无障碍,在iOS中既为VoiceOver,用于支持视觉有障碍的人士使用iOS上的移动应用,提供语音反馈实现无障碍的操作体验。在iOS中使用UIAccessibility API支持VoiceOver。 在支持无障碍体验的开发中涉及到几种情况:

  • 标准控件(StandardControls)即UIButton、UITableView、UISegmentedControld等;
  • UIView和继承自UIView的自定义控件;
  • 除去前面两种情况的需要相应VoiceOver的界面区域,比如通过绘制在UIView上的图形,或者文字区域,既不是标准控件也不是UIView。
阅读更多 →

Alt text

简介

iBeacon是苹果在iOS 7.0 引入的一项新的位置感知特性,其工作方式是,配备有 低功耗蓝牙(Bluetooth Low Energy ,BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID,接收到该ID的应用软件会根据接收到的ID和信号源产生互动。不同功率的BLE设备的信号范围在10m~100m不等,当手机进入信号范围时,能接收到信号源广播的ID(UUID+Major+Minor), App通过解析接收到的ID向用户推送通知或者其他资讯。

阅读更多 →

利用NSURLProtocol劫持WebView请求

背景:

由于很多增值业务使用的是H5页面实现,在开发测试过程中页面不能发布到正式环境,开发、测试以及产品同学需要配置代理或者配host来体验产品,这样测试和体验产品的效率比较低,沟通成本比较高。基于这种情况,我们实现了一套测试环境切换平台,通过在页面上配置url转发规则,终端根据配置信息判断是否将请求转发到代理服务器,代理服务器再根据代理转发规则将请求转发到对应的测试环境,实现测试环境切换自动化,提高测试体验效率。本文介绍iOS终端如何利用NSURLProtocol劫持Webview请求实现请求转发。

阅读更多 →

App Thinning

@(学习)[ios9|xcode]

iOS8刚发布的时候,要更新到最新版本需要用户手机至少5.7GB的剩余空间,导致很多16GB手机的用户不愿意升级到最新版本。苹果为了提高新版本的覆盖率,在iOS9做了一系列的安装包大小的优化,更新到iOS9只需要1.3GB的剩余空间。除了对系统包大小进行优化外,苹果为了为用户腾出更多的空间,推出了一些列方案为应用减少包大小,也就是App Thinning。

阅读更多 →