Я создаю приложение фильтра сообщений.
Я создал php API, который отправляет мне ответ. Вот мой php-код:
class ServerResponse {
public $filter = false;
}
$serverResponse = new ServerResponse();
$data = json_decode(file_get_contents('php://input'), true);
$sender = $data['query']['sender'];
$message = $data['query']['message']['text'];
if (strpos($message, 'code') !== false) {
$serverResponse->filter = true;
} else {
$serverResponse->filter = false;
}
echo json_encode($serverResponse);
В соответствии с документацией Apple API имеет тип POST и работает с такой полезной нагрузкой:
{
"_version": 1,
"query": {
"sender": "0580000000",
"message": {
"text": "This is a message code"
}
},
"app": {
"version": "1.1"
}
}
API работали вернул мне следующие данные JSON:
{
"filter": true
}
Я также загрузил это на свой сервер, как описано Apple при настройке Ассоциированных доменов приложения
{
"messagefilter": {
"apps": ["MyTeamID.com.****.SMS-TEst.MessageFilter",
"MyTeamID.com.****.SMS-TEst"]
}
}
Для цели моего приложения я добавил messagefilter:myDomain.io
в Подписи и возможности> Связанные домены .
Мой info.plist:
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>ILMessageFilterExtensionNetworkURL</key>
<string>https://myDomain.io/mickaeltest</string>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.identitylookup.message-filter</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).MessageFilterExtension</string>
</dict>
В расширении фильтра сообщений, У меня есть следующий код:
context.deferQueryRequestToNetwork() { (networkResponse, error) in
let response = ILMessageFilterQueryResponse()
response.action = .none
if let networkResponse = networkResponse {
// If we received a network response, parse it to determine an action to return in our response.
response.action = self.action(for: networkResponse)
} else {
NSLog("Error deferring query request to network: \(String(describing: error))")
}
completion(response)
}
Однако NetworkResponse nil
с описанием ошибки The operation couldn’t be completed. (com.apple.IdentityLookup.error.messagefilter error 3.)
Что я забыл?