У меня проблемы с передачей пользовательского намерения в Xcode 10 (бета-версия iOS 12).
Я создал пользовательский фреймворк, который используется совместно с целью моего основного приложения и целью 'OrderIntent'.
Я создал файл .intentdefinition с целевым членством, установленным для моей пользовательской структуры (снимок экрана ниже).
I 'я встроил в основное приложение 'Intents Extension' & 'Intents UI Extension'.
Я также добавил 'OrderIntent' в NSExtension-> NSExtensionAttributes-> IntentsSupported в обоих созданных файлах info.plistкогда я добавил расширения намерений (скриншот ниже).
Я пытаюсь пожертвовать намерение так:
INPreferences.requestSiriAuthorization { (status) in
if status != INSiriAuthorizationStatus.authorized {return}
let orderIntent = OrderIntent()
orderIntent.product = "Test product"
orderIntent.quantity = 2
let interaction = INInteraction(intent: customIntent, response: nil)
interaction.donate { (error) in
if error != nil {2
if let error = error as NSError? {
print(error)
}
} else {
print("success")
}
}
}
Приведенный выше код запускается, когда пользователь нажимает на кнопку в приложении.
Я также настроил обработчик намерений следующим образом:
class IntentHandler: INExtension {
override func handler(for intent: INIntent) -> Any {
switch intent {
case is OrderIntent:
return OrderIntentHandler()
default:
fatalError()
}
return self
}
И OrderIntentHandler следующим образом:
public class OrderIntentHandler: NSObject, OrderIntentHandling {
public func handle(intent: OrderIntent, completion: @escaping (OrderIntentResponse) -> Void) {
let orderIntentResponse = OrderIntentResponse(code: OrderIntentResponseCode.success, userActivity: nil)
completion(orderIntentResponse)
}
public func confirm(intent: OrderIntent, completion: @escaping (OrderIntentResponse) -> Void) {
let response = OrderIntentResponse(code: OrderIntentResponseCode.ready, userActivity: nil)
completion(response)
}
}
При тестировании на устройстве я получаю следующееошибка:
Ошибка Домен = IntentsErrorDomain Код = 1901 "Пожертвование намерения" OrderIntent "не поддерживается этим приложением.Убедитесь, что у вас есть расширение, которое поддерживает это намерение. "UserInfo = {NSLocalizedDescription = Пожертвование намерения 'OrderIntent' не поддерживается этим приложением. Убедитесь, что у вас есть расширение, которое поддерживает это намерение.}
Я не могу понять, почему приложение 'OrderIntent' не поддерживается приложением.
Я уже включил Siri на вкладке возможностей и запросил разрешение у пользователя и т. Д.
Есть ли какие-либо другие шаги, которые необходимо предпринять, чтобы позволить мне пожертвовать намерение?