Я выполняю звонок для отдыха всякий раз, когда приложение приложение становится неактивным. Я делаю вызов в методе Application Application WillResignatacation . Вызов работает отлично, если пользователь нажимает кнопку «Домой» на устройстве, но если пользователь блокирует экран, пока приложение все еще находится на переднем плане, вызов, похоже, отправляется, но никогда не завершается, и я не получаю вызов на стороне сервера. < /p>
Я даже попытался сделать то, что было упомянуто в разделе «Создание менеджера с фоновой конфигурацией < /code>», но результат был таким же. При использовании фоновой конфигурации я получаю домен ошибки ошибки = nsurlerrordomain code = -997 «Потерянное соединение с службой переноса фонового передачи» . Это код, который я имею в настоящее время: < /p>
var deviceId:String
// Check if deviceId has been stored
if let device: String = NSUserDefaults.standardUserDefaults().stringForKey(Globals.KEY_DEVICE_ID) {
// deviceId is stored, use it
deviceId = device
} else {
// deviceId not stored, create a new one and store it
deviceId = NSUUID().UUIDString
NSUserDefaults.standardUserDefaults().setObject(deviceId, forKey: Globals.KEY_DEVICE_ID)
}
let params = ["statusId": "2"]
let url = "client/device/" + deviceId
// Create the URL Request
let URLRequest = NSMutableURLRequest(URL: NSURL(string: Globals.BASE_URL + url)!)
// set header fields
if let key = NSUserDefaults.standardUserDefaults().stringForKey(Globals.NS_KEY_SESSION) {
URLRequest.setValue(key, forHTTPHeaderField: "X-XX-API")
}
// Add user agent
if let userAgent = NSUserDefaults.standardUserDefaults().stringForKey(Globals.NS_KEY_USER_AGENT) {
URLRequest.setValue(userAgent, forHTTPHeaderField: "User-Agent")
}
// Set the HTTP method
URLRequest.HTTPMethod = Alamofire.Method.PUT.rawValue
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.myapp.background")
manager = Alamofire.Manager(configuration: configuration)
let encodeMethod: Alamofire.ParameterEncoding = Alamofire.ParameterEncoding.URL
manager.startRequestsImmediately = true
manager.request(encodeMethod.encode(URLRequest, parameters: params).0).validate().responseJSON() {
(response) in
print("response from call: \(response)")
self.manager = nil
}
< /code>
Я использую Xcode 7.1 с целью развертывания 9.1 и Alamofire версии 3.1.2.
Подробнее здесь: https://stackoverflow.com/questions/336 ... ing-screen
Вызов отдыха не завершается при блокировке экрана ⇐ IOS
Программируем под IOS
-
Anonymous
1750233943
Anonymous
Я выполняю звонок для отдыха всякий раз, когда приложение приложение становится неактивным. Я делаю вызов в методе Application Application WillResignatacation . Вызов работает отлично, если пользователь нажимает кнопку «Домой» на устройстве, но если пользователь блокирует экран, пока приложение все еще находится на переднем плане, вызов, похоже, отправляется, но никогда не завершается, и я не получаю вызов на стороне сервера. < /p>
Я даже попытался сделать то, что было упомянуто в разделе «Создание менеджера с фоновой конфигурацией < /code>», но результат был таким же. При использовании фоновой конфигурации я получаю домен ошибки ошибки = nsurlerrordomain code = -997 «Потерянное соединение с службой переноса фонового передачи» . Это код, который я имею в настоящее время: < /p>
var deviceId:String
// Check if deviceId has been stored
if let device: String = NSUserDefaults.standardUserDefaults().stringForKey(Globals.KEY_DEVICE_ID) {
// deviceId is stored, use it
deviceId = device
} else {
// deviceId not stored, create a new one and store it
deviceId = NSUUID().UUIDString
NSUserDefaults.standardUserDefaults().setObject(deviceId, forKey: Globals.KEY_DEVICE_ID)
}
let params = ["statusId": "2"]
let url = "client/device/" + deviceId
// Create the URL Request
let URLRequest = NSMutableURLRequest(URL: NSURL(string: Globals.BASE_URL + url)!)
// set header fields
if let key = NSUserDefaults.standardUserDefaults().stringForKey(Globals.NS_KEY_SESSION) {
URLRequest.setValue(key, forHTTPHeaderField: "X-XX-API")
}
// Add user agent
if let userAgent = NSUserDefaults.standardUserDefaults().stringForKey(Globals.NS_KEY_USER_AGENT) {
URLRequest.setValue(userAgent, forHTTPHeaderField: "User-Agent")
}
// Set the HTTP method
URLRequest.HTTPMethod = Alamofire.Method.PUT.rawValue
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.myapp.background")
manager = Alamofire.Manager(configuration: configuration)
let encodeMethod: Alamofire.ParameterEncoding = Alamofire.ParameterEncoding.URL
manager.startRequestsImmediately = true
manager.request(encodeMethod.encode(URLRequest, parameters: params).0).validate().responseJSON() {
(response) in
print("response from call: \(response)")
self.manager = nil
}
< /code>
Я использую Xcode 7.1 с целью развертывания 9.1 и Alamofire версии 3.1.2.
Подробнее здесь: [url]https://stackoverflow.com/questions/33614546/rest-call-doesnt-complete-when-locking-screen[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия