ios蓝牙开发学习笔记(四)ios蓝牙应用的后台处理

ios蓝牙开发学习笔记(四)ios蓝牙应用的后台处理

https://developer.apple.com/library/prerelease/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html#//apple_ref/doc/uid/TP40013257-CH7-SW1

ios蓝牙应用的配乐处置

iOS应用,你得弄清楚,它在最显著的位置分派。,或在配乐运转。鉴于资源有限的事物,你不可避免的处置这两种制作以前的。

默许状况下,当运用是配乐或挂起时,不落实蓝牙分派。尽管,你可以申明运用伴奏蓝牙装置落实,因而当有蓝牙互插的事变时,您的运用可以被醒来来处置分派。。偶数的你的运用用不着配乐处置的伴奏,当有要紧的事变,该零碎还可以跳出正告,销路处置。

偶数的运用伴奏每一或两个伴奏配乐落实,也能老是。在某个状况下,零碎可以音栓您的运用,这么使m的应用译成可能性。,这将使遭受通讯垂下,如眼前的易被说服的和相干。自ios7过后,蓝牙库伴奏抚养社会地位通讯,而且可以鄙人每一运用启动时回复社会地位通讯。。您可以应用此功能来成长衔接。。

Foreground-Only Apps

只伴奏最显著的位置的应用
聚集运用,除非你必要配乐处理或负责,进入配乐后,这事运用很快就会被挂起来。。悬而未决,运用无法处置与蓝牙互插的分派,无法接纳蓝牙事变。直到回到最显著的位置。

在精髓端,只伴奏最显著的位置的应用,次要的的播送记录包在举行扫描时不克不及被扫描和发展。。以防它在次要的端,播送将中止。,究竟哪一个central想会谈characteristic的值都将收到非常通讯。

在清楚的的状况下,默许行动可能性会星力您的顺序。。比方,当您与表面记录交替工作时,运用挂起(如用户穿越到另每一运用)。衔接可能性中间休息了这事工夫,你将不克收到圆形的,直到运用使活动。

Take Advantage of Peripheral Connection Options

应用去核衔接选择能力

只伴奏最显著的位置的蓝牙应用在挂起后产生的蓝牙事变会被零碎排队,当运用进入最显著的位置时,将事变发送到运用。。当产生使具有特点的精髓事变时,蓝牙库可以供给一种鼓励用户的办法。。用户可以依其说得中肯哪一个使活动运用来决议其说得中肯哪一个使活动运用。。

以防您想应用这些鼓励,你必要赚取给connectperipheral:选择能力 该办法被引入到以下参量中。
CBConnectPeripheralOptionNotifyOnConnectionKey: 运用挂断后,成地与称呼委任次要的使成为衔接,则收回圆形的
CBConnectPeripheralOptionNotifyOnDisconnectionKey: 运用挂断后,以防衔接与称呼委任去核手段断开衔接,则收回圆形的
CBConnectPeripheralOptionNotifyOnNotificationKey: 运用挂断后,称呼委任的次要的有鼓励鼓励。

Core Bluetooth Background Execution Modes

配乐落实制作以前的

以防运用在配乐,则必要处置蓝牙事变。,使感激申明伴奏蓝牙装置M的运用。,左右,当有蓝牙事变时,零碎将醒来运用处置。

蓝牙装置制作以前的有两种。,一种为central角色,Another is the role of peripheral。以防运用必要两种角色,可以申明它伴奏两种制作以前的。。申明方法:增添UIBackgroundModes 键,并添加计入以下字母行的阻塞值。
• bluetooth-central—The app communicates with Bluetooth low energy peripherals using the Core Bluetooth 设计。
• bluetooth-peripheral—The app shares data using the Core Bluetooth framework

在意:它将显示为每一更人性化的译文。,不直率的显示现实键指定对。以防你想显示现实值,可以是必须的的,或手动键,在爸的菜谱中选择显示 Raw Keys/Values

The bluetooth-central Background Execution Mode

伴奏精髓装置以前的

以防你的运用伴奏的装置制作以前的说得中肯功能,更确切地说中UIBackgroundModes键的值中计入bluetooth-central值。后来地运用将能处置蓝牙互插事变的分钟。偶数的在配乐,你依然可以找到并衔接到去核手段,检索、读取和写信反映记录。当有cbcentralmanagerdelegate or CBPeripheralDelegate 当每一代劳事变产生,零碎将醒来运用处置。

必要在意的是,当你进入装置的时分,扫描处置说得中肯稍许的辨别:
1, CBCentralManagerScanOptionAllowDuplicatesKey 此键将被疏忽。,发展同一圈将兼并为每一发展事变。
2,以防扫描说得中肯拿运用都在配乐,后来地,您将应用的扫描空白将被传播。。出狱,扫描去核手段的工夫可以延年益寿。。

左右做是为了增加辐射和节省电能。。

The bluetooth-peripheral Background Execution Mode

伴奏去核配乐运转制作以前的

以防要伴奏去核角色的配乐制作以前的,你必要在说得中肯增添UIBackgroundModes键并在值中计入bluetooth-peripheral值。左右零碎将醒来运用处置读写和订阅事变。

蓝牙设计(去核) Bluetooth 设计)不只容许您的运用被醒来来处置读,,还容许运用在配乐社会地位发送播送。。尽管,当播送清楚的时,你不可避免的在意装置。。即使这样,你不可避免的在意配乐和配乐私下的分别。。异乎寻常地当你的应用必要在配乐发送播送。
1,CBAdvertisementDataLocalNameKey 此键将被疏忽。,四周的拆移 著名的人物将不播送
2,CBAdvertisementDataServiceUUIDsKey 计入在值说得中肯拿服务业 UUIDs将被得名次在过多地面;仅仅iOS手段的显示,它会搜索这些值时,搜索。
3,以防播送社会地位说得中肯拿运用都在配乐,播送频率将取消法令。。

Use Background Execution Modes Wisely

配乐处理或负责制作以前的的睿智运用

为了使完满左右,使感激申明你的运用伴奏配乐运转,你还必须能实际上处置配乐分派。。因蓝牙分派将应用不用电线的。,这么耗费蓄电池,因而最少的配乐分派。当运用被蓝牙事变醒来时,它必须能h,为了重行译成Hung。

伴奏配乐运转的分派要依照一些基本
1,运用必须是交往式的,并供给每一界面,容许用户决议什么时候开端或中止蓝色。。
2,运用被醒来后,使完满这项分派大概要10秒。,列举如下,分派应尽快使完满,并重行Hung。。以防你在配乐破费过于的工夫,这将是零碎甚至使停止。。
3,运用不必须用于落实不注意什么事实要做的事实。。

Performing Long-Term Actions in the Background

配乐长工夫落实

有些运用必要长工夫配乐处理或负责。。举个先例,您可以发送每一家内的防护运用。,iOS手段与蓝牙栏木锁闭器显示:清晰地揭示。当用户距家的自发地门,门自发地翻开,当用户隐现家用的,一并工序运用正配乐运转。。当用户距家,IOS锁定和断开。这是应用只简略转移connectPeripheral:options: ,因衔接并不注意跟随工夫的发出。,iOS手段将重行衔接,当用户隐现家用的。
以防用户距家几天,装出运用被零碎音栓,当重行衔接锁定时,运用将外出用户的家中。,在这场合,用户将无法翻开门。。为这种运用,要紧的是能持续应用蓝牙来落实长提姆。,像监督易被说服的和盘桓衔接。

State Preservation and Restoration

国民抚养和增加

因国民抚养和增加是蓝牙内在伴奏的,你的应用可选择伴奏这一特征来让零碎抚养central和peripheral manager的社会地位,并持续落实蓝牙分派。,偶数的你的运用不注意运转。分派使完满后,零碎重行启动到装置说得中肯应用,让你的运用有机会回复社会地位和进化。。上面塑造的家内的防护运用,零碎可以监督衔接请求允许。,使活动运用时,用户回家并重行 centralManager:didConnectPeripheral: 代劳回调。

蓝牙库伴奏国民抚养和增加,伴奏精髓功能,外周功能。当应用成central角色并增添伴奏国民抚养和增加,零碎将在运用音栓前抚养正中的。 监督器情郎的社会地位,以防有多个正中的运用 managers,您可以选择您认为零碎为您保卫的情郎。。为CBcentralManger 情郎,零碎保卫得大好。:
1,central Manager扫描服务业和有重大意义的选择能力
2,衔接和不贯的去核手段
3,订阅特征

对四周的功能相像地处置。为cbperipheral监督情郎,零碎左右保卫:
1,播送的记录
2,peripheral manager当播音员到手段记录库的services和characteristic
3,that的复数订阅你的特征是精髓

当运用被零碎使活动的装置,以防运用被发展有外周,你可以发现和应用外周精髓 manager,回复他们的社会地位。上面将持续解说多少抚养和回复社会地位。

Adding Support for State Preservation and Restoration

增添伴奏社会地位的抚养和回复

此功能是可选的。,添加接近列举如下:
1,(不可避免的)当它被发现和设定初值时选择伴奏国民抚养和增加。Opt In to State Preservation and Restoration 本条文将更分钟地塑造。
2,当运用被醒来时,不可避免的回复正中的或去核手段 监督情郎。Reinstantiate Your Central and Peripheral Managers 这将持续在这边塑造。
3,(不可避免的)减压器法。Implement the Appropriate Restoration Delegate 办法。 这将持续在这边解说。
4,(可选)重申正中的和表面 监督者的设定初值工序。Update Your Initialization Process。这将持续在这边解说。

Opt In to State Preservation and Restoration

选择伴奏国民抚养和增加

当它被发现和设定初值时,供给单独的的恢复ID。回复id是每一字母行。,用于蓝牙库和运用,id的增加用于象征正中的或表面。 manger的。您的指定遗传密码只触及此字母行。,尽管这事字母行通知蓝牙库它必要抚养社会地位。。蓝牙库只抚养有该情郎的社会地位。

假设,选择伴奏国民抚养和增加的应用仅仅每一CBCentralMnager情郎加盖于成了central角色,这么在设定初值时设定初值options中增添CBCentralManagerOptionRestoreIdentifierKey 键,并将每一值赋给id。

myCentralManager = [[CBCentralManager 分派] initWithDelegate:selfqueue:niloptions:@{ CBCentralManagerOptionRestoreIdentifierKey: @"myCentralManagerIdentifier" }];

peripheral 策士的处置是相像的。,key是CBPeripheralManagerOptionRestoreIdentifierKey

在意:因运用可以有多个cbcentralmanager 和 CBPeripheralManger加盖于。在意,每个恢复ID都是单独的的。,左右可以区别零碎。。

Reinstantiate Your Central and Peripheral Managers

整修精髓和去核 manager

当运用被零碎醒来时,你必要做的第一件事是应用恢复id恢复central and peripheral manager。以防运用中仅仅每一精髓 or peripheral manager,而且存信赖运用的一并经济周期中。,因而不费力地。。
以防运用中应用突出每一正中的 or peripheral manager 或许以防应用的监督器在一并性命中不存在,后来地运用必要意识必要回复有先行词监督人员。。在成application:didFinishLaunchingWithOptions: 这事代劳的办法,经过应用参量launchoptions说得中肯键(UIApplicationLaunchOptionsBluetoothCentralsKey or UIApplicationLaunchOptionsBluetoothPeripheralsKey) 您可以获得为咱们抚养的运用的增加ID列表。。

- (bool)运用:( *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
 NSArray *centralManagerIdentifiers = launchOptions[UIApplicationLaunchOptionsBluetoothCentralsKey];
 ...

在增加ID列表过后,你可以回复正中的 manager 情郎了。

在意:运用被使活动时,The system provides only central with Bluetooth tasks at the end of the appl and peripheral managers 入侵检测零碎的恢复。

Implement the Appropriate Restoration Delegate Method

减压器法

在正中的的重行制造硬币中 and peripheral 在监督者,您必要经过蓝牙零碎回复它们的社会地位。。正中的 managers,要成centralManager:willRestoreState: 代劳办法,四周 managers 成peripheralManager:willRestoreState: 办法。

要紧:为应用国民抚养和增加特点的应用,应用被使活动到配乐的第每一代劳转移是centralManager:willRestoreState: and peripheralManager:willRestoreState: 。为不应用此特点的运用,第每一代劳转移是centralManagerDidUpdateState: and peripheralManagerDidUpdateState:。

在这些代劳,基本原理每一参量是字典。,计入运用音栓时有关监督器的通讯。。能找到的键指定咨询 Central Manager State Restoration Options constants in CBCentralManagerDelegate Protocol Reference and the Peripheral_Manager_State_Restoration_Options constants in CBPeripheralManagerDelegate Protocol Reference

回复cbcentralmnager 情郎的社会地位,要应用centralManager:willRestoreState: 办法中字典的键指定对。举个先例,假设centralmanger情郎在app被音栓时有acitve或pending衔接,该零碎将持续监督它们。。如上面的指定遗传密码所示,可以应用CBCentralManagerRestoredStatePeripheralsKey 键从字典中获取拿手段的列表。,这些手段是正中的的。 衔接或衔接手段。

- (void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary *)state {
NSArray *peripherals = state[CBCentralManagerRestoredStatePeripheralsKey];
...

多少应用这事列表安宁分钟状况。。比方,以防运用要保卫正中的 manger 四周已发展名单,你可能性必要应用它。笔记衔接 to a Peripheral Device After You’ve Discovered It, 请把必要设置有重大意义的的去核注。

为CBPeripheralManager 情郎,照片的工序也必要,有重大意义的的代劳办法是peripheralManager:willRestoreState: 。

Update Your Initialization Process

重申你的设定初值工序

在前面三步过后,你可能性想意识正中的 and peripheral 监督者的设定初值工序。不过这是每一可选接近,尽管以防你想让你的运用运转得更顺利,这很要紧。。装出在检索服务业时音栓运用。。恢复后应用,不意识它的工序,这一步。你想意识到哪一步。

插图画家,当在centralManagerDidUpdateState:办法中设定初值你的应用时,你可以发现在应用被音栓时你其说得中肯哪一个成发展被恢复peripheral的某个service,列举如下:

NSUInteger serviceUUIDIndex = [周.services indexOfObjectPassingTest:^BOOL(CBService *obj,NSUInteger index, BOOL *stop) {
    return [obj.UUID isEqual:myServiceUUIDString];
}];

if (serviceUUIDIndex == NSNotFound) {
    [周 discoverServices:@[myServiceUUIDString]];
    ...

如上,以防零碎在运用发展服务业垄断音栓它,因而开端搜索去核记录,应用discoverservices:搜索。以防运用早已在搜索了SE音栓,后来地,您必要反省什么时候搜索特点。,(以防有每一订阅,还要反省其说得中肯哪一个早已订阅了)。经过反省设定初值工序,可以确保在这时转移到最拨的办法。

发表评论

电子邮件地址不会被公开。 必填项已用*标注