Swift: расширение фильтра сообщений не работает - PullRequest
2 голосов
/ 06 октября 2019

Я создаю приложение фильтра сообщений.

Я создал 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.)

Что я забыл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...