Categories - iOS-SDK
深入理解iOS开发中的BitCode功能
#前言
做iOS开发的朋友们都知道,目前最新的Xcode7,新建项目默认就打开了bitcode设置.而且大部分开发者都被这个突如其来的bitcode功能给坑过导致项目编译失败,而这些因为bitcode而编译失败的的项目都有一个共同点,就是链接了第三方二进制的库或者框架,而这些框架或者库恰好没有包含bitcode的东西(暂且称为东西),从而导致项目编译不成功.所以每当遇到这个情况时候大部分人都是直接设置Xcode关闭bitcode功能,全部不生成bitcode.也不去深究这一开关背后隐藏的原理.中枪的请点个赞.
LLVM是目前苹果采用的编译器工具链,Bitcode是LLVM编译器的中间代码的一种编码,LLVM的前端可以理解为C/C++/OC/Swift等编程语言,LLVM的后端可以理解为各个芯片平台上的汇编指令或者可执行机器指令数据,那么,BitCode就是位于这两者直接的中间码. LLVM的编译工作原理是前端负责把项目程序源代码翻译成Bitcode中间码,然后再根据不同目标机器芯片平台转换为相应的汇编指令以及翻译为机器码.这样设计就可以让LLVM成为了一个编译器架构,可以轻而易举的在LLVM架构之上发明新的语言(前端),以及在LLVM架构下面支持新的CPU(后端)指令输出,虽然Bitcode仅仅只是一个中间码不能在任何平台上运行,但是它可以转化为任何被支持的CPU架构,包括现在还没被发明的CPU架构,也就是说现在打开Bitcode功能提交一个App到应用商店,以后如果苹果新出了一款手机并CPU也是全新设计的,在苹果后台服务器一样可以从这个App的Bitcode开始编译转化为新CPU上的可执行程序,可供新手机用户下载运行这个App.
9月 06 · 13 min
iOS 定位以及地图应用
#定位服务
现在的移动设备大多都提供定位服务功能,使用iOS系统的iPhone,iPod touch和iPad
都可以提供位置服务,iOS设备能提供3种不同途径进行定位:
WiFi定位:通过査饰一个wiFi路th器的地理位置的信息,比较省电。iPhoneiPod touch和ipad都可以采用。
蜂窝式移动电活基站定位:通过移动运用商基站定位。只有iPhone,3G版本的
iPod touch和iPad可以采用。GPS卫星定位:通过3〜4颗GPS卫星定位,最为准确,但是耗电量大,不能遮挡。 iPhone,iPod Touch和iPad都可以采用。
iBeacon微定位:苹果公司在iOS 7开始支持iBeacon技术,iBeacon技术是苹果研
发,它使用低功耗蓝牙技术,通过多个iBeacon基站可以创建一个信号区域(地理围
栏) 设备进入该区域时,相应的应用程序便会提示用户进入了这个地理围栏。
iOS不像Android系统在定位服务编程时候,可以指定采用哪种途径进行定位。iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备采用哪种方式进行定位,
iOS系统会根据设备的情况和周圃的环境,采用一套最佳的解决方案。这个方案是这样:如果能够接收GPS信息,那么设备优先采用GPS定位,否则采用WiFi或蜂窝基站定位。在WiFi和蜂窝基站之间优先使用WiFi,如果无法连接WiFi才使用蜂窝基站定位。
8月 21 · 5 min
iOS 软件测试之 UI Testing
在任何软件的开发中,自动化UI测试都是很重要的。它能快速发现你应用中的问题,在发布之前进行一次成功的配套测试能减少许多问题。在iOS平台目前是通过UIAutomation来完成自动化测试,它的用例是用JavaScript写的。这需要打开Instruments,在其中编写和运行脚本。这个流程实在是慢得出奇而且要花很长时间来适应。
#UI Testing
在Xcode 7 中,Apple引入了一种新的方式来在你的应用中进行UI测试。UI testing允许你找到UI元素并与之交互,还能检查属性和状态。UI testing已经完全集成进Xcode 7 的测试报告了,可以和单元测试一起执行。在Xcode 5 中XCTest就已经集成到Xcode 的测试框架了,而在Xcode 7 中,XCTest已经拥有进行UI测试的能力了。这样你就能在检查UI状态的时候执行断言了。
8月 19 · 10 min
iOS连接外设的几种方式
一般iOS开发者做APP开发大部分时候都是通过Http(s)请求跟后台服务器打交道,做一些信息展示和用户交互。很少涉及到去跟外部硬件设备连接的开发。随着近年来车联网和物联网的兴起,智能家居和智能硬件的逐步火热,越来越多的app被开发出来,用来跟硬件设备进行来连接,获取硬件相关信息展示或者发送指令控制硬件来提供服务。故本文就针对iOS的app如何跟外部设备进行连接通信这个问题跟大家交流一下。本文原创,欢迎转载,转载请注明出处,如有不正确的地方恳请各位看官指正。

8月 18 · 6 min
Handoff:沟通iOS应用和网页
#Handoff的基本常识
iOS 8以及Mac OS X Yosemite之后引入了一个新的功能特性:Handoff。Handoff也就是Continuity特性,连续互通,比如你用iPhone写邮件写到一半想在Mac上继续写,或者Mac上看到一个网页想在手机上浏览,这些便是Handoff的使用场景了。
8月 18 · 9 min
Xcode开发者工具磁盘空间清理
#Xcode磁盘空间大清理
使用Daisy Disk可以查看整个电脑的存储情况
##移除对旧设备的支持
每次把一个设备接入电脑进行真机调试之前,电脑会对设备建立索引,也在此文件夹下生成对该设备系统的支持文件。于是这里存在了一堆对旧版本iOS设备支持的文件。而我最近基本只对iOS9.3的设备进行真机调试。于是删除了所有低于9.3的文件夹。
路径:~/Library/Developer/Xcode/iOS DeviceSupport
8月 15 · 2 min
iOS使用TestFlight进行App Beta版测试
在2014WWDC中库克用了20秒的时间,简短的3句话,介绍了测试版本的TestFlight服务。TestFlight用于将Beta版测试,TestFlight已经被苹果收购,所以不要担心存在第三方测试造成数据泄露问题。TestFlight需要iOS8及以上版本的iOS设备才能运行,所以iOS7及之前的设备就不能安装了。TestFlight整合进了iTunes Connect,开发者可以通过电子邮件来邀请测试员来进行测试,这样开发者就可以更简单地让你的同行非同行、你的上级、你的客户、你所想要一起参与测试的人一起来测试应用。
TestFlight的测试方式分为两种:
- 内部测试
- 外部测试
从功能上讲,这两种方式都可以为测试人员在测试阶段对你的App进行测试。但是既然分了内部测试和外部测试,他们肯定还是有区别的,所谓的内部主要是指iTunes Connect上在你的开发团队里参与技术开发或者管理的成员。最多可以邀请25个内部成员,而与之相对的外部测试,指的是那些不属于你的团队或者公司的测试者,外部测试人员的上限是2000人。这里有一点需要注意的是,在你邀请外部成员参与测试之前,需要先通过苹果的审核,一般审核会在一天左右。而这一限制在内部成员上就没有,也就是说只要你把你的App上传到iTunes Connect上之后内部成员就可以开始进行内部测试了,无需审核。在邀请发出后,有效测试时间为60天。
8月 13 · 7 min
Apple Pay编程开发详细教程
#Apple Pay简介
##什么是Apple Pay
Apple Pay,简单来说, 就是一种移动支付方式。通过Touch ID/ Passcode,用户可使用存储在iPhone 6, 6p等设备上的信用卡和借记卡支付证书来授权支付;
它是苹果公司在2014苹果秋季新品发布会上发布的一种基于NFC的手机支付功能,于2014年10月20日在美国正式上线,2016年2月18日凌晨5:00, Apple Pay 业务在中国上线。
Apple Pay 是在 iOS 8 中第一次被介绍,它可以为你的应用中的实体商品和服务,提供简单、安全、私密的支付方式。它使得用户支付起来非常简便,只需按一下指纹就可以授权进行交易。
8月 12 · 18 min
iBeacon 微定位技术
在一家大型商场,医院或是大楼里,你是否会曾经有过找不到想要去的地方的经历呢?
这种情况下采用上面介绍的传统定位方式,就有些”力不从心”了,首先不能采用GPS定位,而WiFi 和蜂窝式移动电话基站定位误差比较大,这种情况下的定位就是 “微定位”技术了
#地理围栏
微定位技术中一个比较重要的概念—地理围栏. 地理围栏(Geo-fencing)是LBS的一种新应用,就是用一个虚拟的栅栏围出一个虚拟地理边界. 当手机进入,离开某个特定地理区域,或在该区域活动时,手机可以可以接受自动通知和警告.有了地理围栏技术,位置社交网站就可以帮助用户进入某一个地区时自动登记.
地理围栏可以采用传统定位或微定位实现,当然微定位更加有现实意义,建立地理围栏技术往往是处于电子商务,店内导航和设计活动等目的. 定位环境比较复杂,定位要求比较精确.
8月 10 · 8 min
Handoff 编程指南
本文翻译自Apple官方文档:Handoff Programming Guide
#关于Handoff
Handoff是iOS 8 和 OS X v10.10中引入的功能,可以让同一个用户在多台设备间传递项目。
Handoff能让用户从一台设备开始一个项目,然后切换至其他设备继续进行,这一切都是无缝的,每台设备都无需重新配置。例如,用户正在Mac上的Safari浏览一片长文章,随后他可以切换到附近一台已使用相同Apple ID 登入iCloud的iOS设备上,在这台iOS设备上的Safiri中继续浏览相同的网页,页面滚动的位置和原设备上的一样。

8月 10 · 33 min