HTTP-запрос не удался при попытке сообщить о нежелательном сообщении через APIIOS

Программируем под IOS
Ответить
Anonymous
 HTTP-запрос не удался при попытке сообщить о нежелательном сообщении через API

Сообщение Anonymous »

Я создал расширение для оповещения о нежелательных сообщениях, как описано здесь: https://developer.apple.com/documentati ... _reporting
Следуя инструкциям, я смог получить обратный вызов отчета в моем классе расширения, но когда я пытаюсь сделать запрос API к моему HTTPS-серверу, где-то в журнале консоли я получаю

Код: Выделить всё

nw_resolver_can_use_dns_xpc_block_invoke Sandbox does not allow access to com.apple.dnssd.service
и

Код: Выделить всё

Task . finished with error [-1003] Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." UserInfo={_kCFStreamErrorCodeKey=-72000, NSUnderlyingError=0x282d5c600 {Error Domain=kCFErrorDomainCFNetwork Code=-1003 "(null)" UserInfo={_NSURLErrorNWPathKey=satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns, _kCFStreamErrorCodeKey=-72000, _kCFStreamErrorDomainKey=10}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask ., _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask ."), NSLocalizedDescription=A server with the specified hostname could not be found., NSErrorFailingURLStringKey=https://sub.domain.com/debug, NSErrorFailingURLKey=https://sub.domain.com/debug, _kCFStreamErrorDomainKey=10}
По сути, поиск DNS завершается неудачей из-за ограничения песочницы, но я не смог разрешить доступ к песочнице приложения, что похоже на специфическую возможность OSX.
Вот пример кода, который отвечает за отчетность API:

Код: Выделить всё

func reportToAPI(for request: ILClassificationRequest) {

let payload: [String: AnyHashable] = [
"data": "OK",
"test": "payload"
]

guard let url = URL(string: "https://sub.domain.com/debug") else {
return
}

var request = URLRequest(url: url)

request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload, options: .fragmentsAllowed)

let task = URLSession.shared.dataTask(with: request) { data, _, error in
guard let data = data, error == nil else {
return
}

do {
let response = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
print(response)
} catch {

}
}
task.resume()
}
У меня также есть связанные домены, настроенные как для расширения, так и для цели основного приложения, как классификацияreport:sub.domain.com и domain.com, а также моя ассоциация apple-app-site-association. файл загружен следующим образом:

Код: Выделить всё

{
"classificationreport": {
"apps": ["L***.com.b***.smsreporting.unwantedreporting","L***.com.b***.smsreporting"]
}
Любая помощь и рекомендации приветствуются, поскольку я застрял на этом этапе, а отсутствие документации по этому вопросу усложняет задачу.
Изменить : Я тестирую это на своей учетной записи разработчика, которая является индивидуальным членством, а не организационным, если это имеет значение.

Подробнее здесь: https://stackoverflow.com/questions/765 ... rt-via-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»