Я работаю над приложением, которое защищает некоторые приложения, и когда пользователь достигает особого количества шагов, оно не снимает эти приложения. < /p>
Мое вдохновение - это приложение ниже. (Социальные пределы) Его основная цель - периодически работать и проверять, достиг ли пользователь определенные шаги и не снятие приложения, даже когда приложение прекращается или в фоновом режиме. (Протестировал это, отменив разрешение и видит, разблокирует ли оно приложение, но оно не без этого разрешения). < /P>
Как я могу достичь того, чего достиг социальный предел. < /P>
Это мой код: < /p>
BGTaskScheduler.shared.register(forTaskWithIdentifier: refreshTaskIdentifier, using: nil) { task in
self.handleAppRefresh(task: task as! BGAppRefreshTask)
}
< /code>
Я вызываю функцию, чтобы установить планировщик: < /p>
scheduleAppRefresh()
private func scheduleAppRefresh() {
// MARK: - e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"com.test.socialLimit.refreshTask"]
// BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: refreshTaskIdentifier)
BGTaskScheduler.shared.getPendingTaskRequests { requests in
print("\(requests.count) BGTask Pending")
guard requests.isEmpty else { return }
let request = BGAppRefreshTaskRequest(identifier: self.refreshTaskIdentifier)
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // Earliest 15 mins later
do {
try BGTaskScheduler.shared.submit(request)
print("TASK SCHEDULE")
} catch {
print("Could not schedule app refresh: \(error)")
}
}
}
< /code>
Это моя фактическая функция обработки работы: < /p>
private func handleAppRefresh(task: BGAppRefreshTask) {
scheduleAppRefresh() // Schedule the next refresh
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
let operation = BackgroundRefreshOperation()
task.expirationHandler = {
queue.cancelAllOperations()
}
operation.completionBlock = {
task.setTaskCompleted(success: !operation.isCancelled)
}
queue.addOperation(operation)
}
< /code>
Проблема в том, что она работает при отладке с помощью команды
e -l objc -(void) [[bgtaskscheduler sharedscheduler] _simulatelaunchfortaskwithidiveifier:@"com.test.sociallimit.refreshtask"] < /p>
nt on apllight. Я даже ждал 24 часа.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ot-running
Ios bgtaskscheduler не работает ⇐ IOS
Программируем под IOS
1754060161
Anonymous
Я работаю над приложением, которое защищает некоторые приложения, и когда пользователь достигает особого количества шагов, оно не снимает эти приложения. < /p>
Мое вдохновение - это приложение ниже. (Социальные пределы) Его основная цель - периодически работать и проверять, достиг ли пользователь определенные шаги и не снятие приложения, даже когда приложение прекращается или в фоновом режиме. (Протестировал это, отменив разрешение и видит, разблокирует ли оно приложение, но оно не без этого разрешения). < /P>
Как я могу достичь того, чего достиг социальный предел. < /P>
Это мой код: < /p>
BGTaskScheduler.shared.register(forTaskWithIdentifier: refreshTaskIdentifier, using: nil) { task in
self.handleAppRefresh(task: task as! BGAppRefreshTask)
}
< /code>
Я вызываю функцию, чтобы установить планировщик: < /p>
scheduleAppRefresh()
private func scheduleAppRefresh() {
// MARK: - e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"com.test.socialLimit.refreshTask"]
// BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: refreshTaskIdentifier)
BGTaskScheduler.shared.getPendingTaskRequests { requests in
print("\(requests.count) BGTask Pending")
guard requests.isEmpty else { return }
let request = BGAppRefreshTaskRequest(identifier: self.refreshTaskIdentifier)
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // Earliest 15 mins later
do {
try BGTaskScheduler.shared.submit(request)
print("TASK SCHEDULE")
} catch {
print("Could not schedule app refresh: \(error)")
}
}
}
< /code>
Это моя фактическая функция обработки работы: < /p>
private func handleAppRefresh(task: BGAppRefreshTask) {
scheduleAppRefresh() // Schedule the next refresh
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
let operation = BackgroundRefreshOperation()
task.expirationHandler = {
queue.cancelAllOperations()
}
operation.completionBlock = {
task.setTaskCompleted(success: !operation.isCancelled)
}
queue.addOperation(operation)
}
< /code>
Проблема в том, что она работает при отладке с помощью команды
e -l objc -(void) [[bgtaskscheduler sharedscheduler] _simulatelaunchfortaskwithidiveifier:@"com.test.sociallimit.refreshtask"] < /p>
nt on apllight. Я даже ждал 24 часа.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79722627/ios-bgtaskscheduler-not-running[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия