正文
ios智能设备开发,ios手机开发
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
iOS开发主要学习什么知识呀?
iOS在全球拥有近四分之一(23.28%)的市场份额。App在数以百万计的iPhone、iPad和iPod设备上稳定的运行,iOS系统为开发者创造了无限的可能性来构建高质量、创新的应用程序。但是,无论是经验丰富的开发人员,还是刚开始学习苹果app开发,如果没有正确的iOS应用程序开发语言和工具,那么你都不可能开发出出色的iOS应用程序。
这里列出的9种久经考验的iOS应用程序开发语言和工具,你可以通过学习成为苹果app开发的大师。如果将这些工具和语言巧妙地结合起来,就可以帮助你更快更高效地进行苹果app开发。
1、Objective-C
Objective-C是由Tom Love和Brad Cox在1984年开发的,是一种基于C语言的通用的、面向对象的编程语言。在苹果推出自己的编程语言Swift之前,它是开发iOS应用程序的主要语言。
2、Swift
Swift是一种比Objective-C更容易学习和使用的现代编程语言,于2014年由苹果开发并发布。在受欢迎程度和使用率方面已经超过了Objective-C,它现在是苹果开发iOS、macOS、watchOS、tvOS等尖端应用程序的主要编程语言。
3、C#/C++
c#被认为是最通用的编程语言,而c++则是最古老和最流行的编程语言之一。在APICloud跨平台移动应用开发工具APICloud Studio的帮助下,你可以利用c#的强大功能为iOS平台构建本地应用。此外,你还可以在iOS应用程序中使用内置的c++库。
4、Python
由Guido van Rossum于1991年创建的Python已经成为有史以来最科学的编程语言之一。作为一种高级的动态编程语言,如果你正在开发一款以人工智能和机器学习为动力的iOS应用程序,它将被证明是非常有用的。在iOS应用程序开发中,可以利用Python创建函数、库和后端处理任务。
5、HTML5 /CSS3
如果你想开发一个混合的iOS应用程序,它只有一个代码库,可以跨所有操作系统工作,那么你可以使用HTML5, CSS3和JavaScript的组合。要使苹果app开发这条路更快更容易,你可以使用跨平台的移动应用程序开发工具,如PhoneGap、APICloud Studio
6、XCode
XCode是苹果为所有苹果平台开发应用程序的官方IDE。速度极快,运行流畅,是开发人员创建iOS应用程序的首选。
iOS BLE 开发小记[1] - CoreBluetooth 是什么
现在我们都知道,很多智能硬件设备都已经集成了低功耗蓝牙模块,这样我们就可以开发一个 iOS 或者 Mac APP 与它们进行交互。从 macOS 10.9 和 iOS 6 以后,Mac 和 iOS 设备就支持 低功耗蓝牙技术了,我们可以通过 CoreBluetooth 这个框架与底层的各种蓝牙协议栈进行交互,比如 GATT、ATT 和 L2CAP 等。
与底层交互的过程如下图所示:
开始下文之前,我们需要了解几个概念。对蓝牙不够了解的可以看一下维基百科关于 蓝牙 的简介。
Bluetooth 4.0 : 蓝牙 4.0 是 Bluetooth SIG 于2010年7月7日推出的新的规范,其最重要的特性是功耗低,省电!
BLE : Bluetooth low energy wireless technology,也就是低功耗无线蓝牙技术。
BLE 是关于蓝牙4.0 的详细说明,它定义了一套用于低功耗设备之间通信的协议。而CoreBluetooth 则是对 BLE 协议栈的抽象。也就是说,它隐藏了许多底层的详细实现细节,这样对我们开发者来说,开发一个 APP 与 BLE 设备进行交互将会很便捷。
CoreBluetooth 中最关键的两个角色就是 Central(中心) 和 Peripheral(周边), Peripheral 一般是提供数据的一方,而 Central 一般获取 Peripheral 提供的数据然后来完成特定的任务。举个例子,一个集成 BLE 的数字室温计可能提供房间中的实时温度,我们通过 APP 就可以读取、分析和显示房间中的温度。
Peripheral 通过向空中广播数据的方式来使我们能感知到它的存在。Central 通过扫描搜索来发现周围正在广播数据的 Peripheral, 找到指定的 Peripheral 后,发送连接请求进行连接,连接成功后则与 Peripheral 进行一些数据交互, Peripheral 则会通过合适的方式对 Central 进行响应。
CoreBluetooth 对通用的蓝牙任务进行了简化处理,你在 App 中通过 CoreBluetooth 来集成 BLE 功能将会变得简单,如果你开发的 APP 遵循了 Centrals 的开发规范,CoreBluetooth 将会帮你处理与 Peripheral 的扫描、连接以及数据交互的过程,除此之外,通过 CoreBluetooth 将你的设备设置为 本地 Peripheral 也会很便捷。
iOS APP 的状态也会影响蓝牙的行为,当你的 APP 在后台运行或者处于暂停状态中,蓝牙的行为将会受到影响。默认情况下,当你的 APP 在后台运行时或者处于暂停状态中,你的 APP 是不能与 BLE 进行数据通信的,也就是说,当 APP 后台运行时,你需要与 BLE 进行数据通信,你需要声明你的 APP 支持蓝牙后台运行模式,即使你声明了支持后台运行模式,蓝牙在后台运行模式下的数据处理方式也会变得不同,当开发你的 BLE APP 时,你需要注意这些不同点。
即使 APP 在后台运行时,当系统内存过低时也会杀掉 APP 的后台进程,对于 iOS 7,CoreBluetooth 支持 Central 和 Peripheral 的状态信息的保存和恢复。可以通过这个功能来实现与 BLE 设备的长期交互。
CoreBluetooth 框架为你的 APP 与许多常见的 BLE 设备进行交互提供了交互接口,通过合理的利用和实践将会提高用户的体验。
举个例子,当你实现 Central 或 Peripheral 的功能时,会利用设备携带的无线电广播设备(Radio)向空中广播信号,这样就会影响到电池的续航时间,因此当你设计 APP 时,需要尽可能的减少 Radio 的使用频率。
重要提醒: 在 iOS 10以后,通过 CoreBluetooth 与 BLE 设备进行数据通信时,必须在项目的 Info.plist 文件中包含关于 NSBluetoothPerpheralUsageDescription 的描述,否则会导致 APP 闪退,详情见 NSBluetoothPerpheralUsageDescription 。
在 BLE 通信中主要包含两种角色:Central(中心)和 Peripheral(周边),基于传统的客户-服务器架构,Peripheral 通常会提供其他设备需要的数据,Central 通常利用通过 Peripheral 获取的信息来完成特定的任务,如图所示,心率监视器 提供数据给 Mac 或 iOS APP,然后来显示用户的心率数据。
Peripheral 以广播数据包的形式广播服务中的数据,广播数据包指的是包含 Peripheral 有用信息的一个较小数据包,比如 Peripheral 的名字和主要功能数据。比如,一个数字室温计广播的数据中可能包括当前室温,对于 BLE,广播是显示它们存在的主要方式。
如图,对于一个 Central 来说,它能够搜索和获取到它想要的 Peripheral 的广播信息。
连接 Peripheral 的目的就是和 Peripheral 提供的数据进行交互,在你理解这一点后,可以更好的明白 Peripheral 的数据组成结构。
Peripheral 包含一个或多个 Service(服务)和连接信号强度的有用信息。Service 可以理解成是一个完成指定功能的数据集合。举个例子,一个心率监测服务的功能就是可能就是从心率传感器中读取心率数据。
Service 是由 Characteristic(特征) 组成的,Characteristic 为 Peripheral 的 Service 提供更详细的信息,举个例子,心率服务可能包含一个测量不同体位的心率数据的 Characteristic 和一个传输心率数据的 Characteristic,下图所示的是一个心率监测设备的数据组成结构。
当 Central 与 Peripheral 建立成功的连接后,Central 可以发现 Peripheral 提供的全系列的 Service 和 Characteristic,广播数据包中的数据仅仅是可用服务的一小部分而已。
Central 可以通过读取或写入 Service Characteristic 值的方式与 Service 进行交互。你的 APP 也许需要从数字室温计中获取当前室内的温度或者设置一个温度值到数字室温计中。
BLE 通信过程中涉及到的主要角色和数据处理已经简单的集成到 CoreBluetooth 框架中了。
当你通过本地 Central 与周边 Peripheral 进行交互时,你只需要调用 Central 方面的方法就可以了,除非你设置一个本地 Peripheral,并用它来响应其他的 Central 的交互请求,实际运用中,你的蓝牙处理大部分会在 Central 方面。
在 Central 方面,用 CBCentralManager 对象来表示一个Local Central 设备,这个对象被用来管理 Remote Peripheral 设备(用 CBPeripheral 对象来表示),包括搜索和连接正在广播数据的 Peripheral。如图所示的是 CoreBluetooth 框架中如何表示 Local Central 和 Remote Peripheral。
当你与 Remote Peripheral 进行数据交互时,你将处理它的 Service 和 Characteristic,在 CoreBluetooth 框架中,用 CBService 对象来表示 Peripheral 中的服务,同样地,用 CBCharacteristic 对象来表示 Service 中的特征。下图所示的是 Remote Peripheral 的服务特征结构树。
对于 macOS 10.9 和 iOS 6, Mac 和 iOS 设备可以实现 BLE Peripheral 的功能,如为其他设备(包括 Mac,iPhone,和 iPad)提供数据。当你遵循 Peripheral 的开发规范时,就可以调用 BLE 通信的 Peripheral 方面的方法。
在 Peripheral 方面,一个 Local Peripheral 可以用 CBPeripheralManager 对象来表示,这个对象被用来管理发布包含的服务,包括组织构建 Peripheral 的数据结构以及向中心设备广播数据,Peripheral Manager 也对 Remote Central的读写交互请求做出响应。如图所示的是一个 Local Peripheral 和 Remote Central。
当你设置并与 Local Peripheral 进行数据交互时,你处理的是它的可变的 Service 和 Characteristic,在 CoreBluetooth 框架中,用 CBMutableService 对象来表示 Local Peripheral 中的服务,同样地,用 CBMutableCharacteristic 对象来表示Local Peripheral 服务中的特征。下图表示的是一个 Local Peripheral 中的服务特征结构树。
后续章节会进一步补充关于 BLE 开发的知识。
1、 TP40013257-CH1-SW1
2、 CoreBluetoothOverview
欢迎在本文下面留言一起交流心得...
iOS开发需要哪些设备
ios开发硬件配置环境
工具:使用到 Xcode 和 iOS SDK(Apple 提供的开发工具)。
硬件配置:
首先有一台Mac电脑,然后有一个iDevice——iPhone、iPad、iPod Touch均可,最好拥有以上三者,以便适配和测试。
软件设置:
在开发应用程序时,会使用到 iOS 软件开发套件 (SDK) 以及 Xcode,即 Apple 的集成开发环境 (IDE)。
Xcode 包括源代码编辑器、图形用户界面编辑器及其他许多功能,为您开发完美的 iPhone、iPod touch 和 iPad 应用程序,提供了所需要的全部资源。
应用程序开发工具集中显示在一个窗口中,Xcode 称之为工作区窗口。在此窗口内,可以顺畅地从代码编写转换到代码调试,再到用户界面设计。
iOS SDK 扩展了 Xcode 工具集,包含 iOS 专用的工具、编译器和框架。
其他
无需加入该计划也可编写应用程序并在 iOS Simulator 中测试。只有加入该计划,才能在设备上测试与分发应用程序,还可以全权访问 iOS Dev Center 和 iOS Provisioning Portal。
iOS 低功耗蓝牙4.0开发指南。
1.什么是蓝牙4.0,蓝牙其它标准又是什么?
详细描述:低功耗蓝牙(Low Energy; LE),又视为Bluetooth Smart或蓝牙核心规格4.0版本。其特点具备节能、便于采用,是蓝牙技术专为物联网(Internet of Things; IOT)开发的技术版本。所以它最主要的特点是低功耗,普及率高。现在所说的蓝牙设备,大部分都是在说4.0设备,ble也特指4.0设备。 在4.0之前重要的版本有 2.1版本-基本速率/增强数据率(BR/EDR) 和 3.0 高速蓝牙 版本,这些统称为经典蓝牙。4.0还有4.1和4.2的小版本,其中4.2版本对传输速率做了进一步他提升,提高了2.5倍,苹果从iphone6开始使用4.2,最新的蓝牙标准为蓝牙5.0,其中最大的特点连接范围扩大了4倍,速度又提高了2倍,无连接数据广播能力提高了8倍,增加了蓝牙组网的能力。
2.蓝牙开发必须知道的概念。
2.1.1 central和peripheral:
蓝牙应用开发中,存在两种角色,分别是central和peripheral(pə’rɪfərəl) ,中文就是中心和外设。比如手机去连接智能设备,那手机就是central,智能设备就是peripheral。大多时候都是central去连接peripheral的场景。
2.1.2 广播和连接:
peripheral会发出广播,central扫描到广播后,可以对设备进行连接,发出connect请求,peripheral接收到请求后,同意连接后,central和peripheral就建立了连接。
2.1.3 连接后的操作:
write,read,notify,indecate, response or not …
indecate和notify的区别就在于,indecate是一定会收到数据,notify有可能会丢失数据(不会有central收到数据的回应),write也分为response和noresponse,如果是response,那么write成功回收到peripheral的确认消息,但是会降低写入的速率。
2.1.4 协议:
每个具体的智能设备,都约定了一组数据格式,这个就是数据协议,例如手环中获取到数据0X001023,其中第2位到第5位表示步数,那么就2310就是步数的16进制的数据,转换成10进制就是8976步,需要注意的是,设备端都是小端模式,所以取4位时候,高字节在前低字节在后。
3. iOS蓝牙应用的一般开发流程。
4. 蓝牙的数据交互。
write,read,notify,indecate, response or not … 都是容易理解的,indecate和notify对应的是长连接,建立indecate后,peripheral可以随时往central发送数据。
indecate和notify的区别就在于,indecate是一定会收到数据,notify有可能会丢失数据(不会有central收到数据的回应),write也分为response和noresponse,如果是response,那么write成功回收到peripheral的确认消息,但是会降低写入的速率。
对于一个charateristic,他的读写订阅的权限是peripheral决定的,熟悉可以被同时设置,一般会根据外设的功能来决定。
5.蓝牙ota DFU。
蓝牙ota,DFU(Device Firmware Update)指的是蓝牙设备的固件升级,其实是一整套流程,不同的蓝牙芯片,ota的流程有不同之处,我这里用ti的芯片举例。步骤为:切系统(bootloader mode),重启,传输数据,验证数据,切系统,重启,完成。
其中数据传输也会分成很多节去发送,没法送一段数据,做一次数据校验。
6.ota存在的问题。
每个智能设备的速率,功耗,存储都会有很多限制,导致很多设备会自己去实现ota的功能,自定义流程和数据传输方式,导致许多设备都是有自己私有的ota模式和协议,所以在做开发的时候,要仔细阅读设备协议中对ota的描述。
7.如何做自动重连。
只需要在设备断开连接的委托方法中,重新调用gatt.connet或者是centralManager.connet方法就可以了,无论当时设备是否有点,是否在周围,当设备再次开会或者连接到可连接范围内,都会自动被连上。
8.连接失败处理。
分两个平台来说,iOS端也有连接失败的委托,但是好像几乎不会发生这种情况,而对于同款设备,android常常会出现连接失败的情况,status != BluetoothGatt.GATT_SUCCESS,android端开发请不要把连接失败和断开连接放在一块处理,因为断开连接可以直接尝试重新连接,而连接失败后尝试重新连接,需要加一些延时,并且需要gatt.close,清空一下状态,否则会把gatt阻塞导致手机不重启蓝牙就再也无法连接任何设备的情况 。
9.后台运行。
iOS后来运行,需要设备中info.Plist权限,key:Required background modes ,value: bluetooth-central(手机作为central) , bluetooth-peripheral。
10.同时连接多个设备。
使用同一个CBCentralManager,通过进入委托的peripheral的identifier区分不同的设备,进行不同的操作和处理。
11.扫描广播包。
所有外设,只有在发出广播包的情况下,才能被central发现,绝大多数情况下,外设被连接后就不会发出广播(也有例外),很多人遇到无法找到设备的问题,大多属于这种情况。
12.提高蓝牙连接速度。
无论是iOS,还是android,都可以通过已绑定的设备,在不开启扫描的情况下进行快速连接,iOS需要的参数是peripheral的identifier,android需要mac地址。但android和iOS还是有一些区别的,比如iOS不能拿到已绑定的设备list,但是可以通过UUID去拿到peripheral的实例。而android可以拿到已绑定的设备list。android绑定过程需要手动调用createBond的方法,而iOS在连接成功一次后会自动绑定。 android在处理createBond时,常常会应为不同手机平台,不同设备,会产生兼容性的问题,这点需要注意。
13.定向扫描。
在扫描时候可以传入serviceUUID,这样可以扫描到特定条件的设备,提高扫描的速度,排除干扰。
14.如何获取mac地址。
而iOS出于苹果的安全策略问题,无法直接获得mac地址,只能得到一个mac地址换算出来的identifier。