【发布时间】:2019-04-07 18:26:31
【问题描述】:
我开发了一个从 BLE 设备读取数据并将此数据发送到 MQTT 代理(服务器)的应用程序。但是当应用程序进入后台时,数据发送在 3 分钟后停止(我使用后台任务)。我怎么能增加这个时间。或者也许有一个官方机制,Apple 会在 App Store 的确认步骤中推广并且不会拒绝,用于从 BLE 读取数据并将这些数据发送到后台服务器,不受时间限制?
我的后台任务:
AYBackgroundTask.h
@interface AYBackgroundTask : NSObject
@property (assign) UIBackgroundTaskIdentifier identifier;
@property (strong, nonatomic) UIApplication *application;
+ (void)run:(void(^)(void))handler;
- (void)begin;
- (void)end;
@end
AYBackgroundTask.m
@implementation AYBackgroundTask
+ (void)run:(void(^)(void))handler {
AYBackgroundTask *task = [[AYBackgroundTask alloc] init];
[task begin];
handler();
}
- (void)begin {
self.identifier = [self.applicationn beginBackgroundTaskWithExpirationHandler:^{
[self end];
}];
}
- (void)end {
if (self.identifier != UIBackgroundTaskInvalid) {
[self.application.application endBackgroundTask:self.identifier];
}
self.identifier = UIBackgroundTaskInvalid;
}
@end
这里有谁遇到过这个问题? 最好的祝福, 安东。
【问题讨论】:
标签: objective-c bluetooth-lowenergy mqtt core-bluetooth