Ниже приведен код расширения общего ресурса для iOS
части flutter
приложения.
У меня буквально часы опыта работы с XCode, поэтому, пожалуйста, извините за ошибки, связанные с noob.Это метод viewDidLoad
из моей SLComposeServiceViewController
реализации
override func viewDidLoad() {
super.viewDidLoad();
let content = self.extensionContext!.inputItems[0] as! NSExtensionItem;
let contentTypeImage = kUTTypeImage as String;
let contentTypeText = kUTTypeText as String;
for attachment in content.attachments as! [NSItemProvider] {
if attachment.hasItemConformingToTypeIdentifier(contentTypeImage) {
// Verify that the content type is image.
attachment.loadItem(forTypeIdentifier: contentTypeImage, options: nil) {
data, error in if error == nil {
let url = data as! NSURL
if let imageData = NSData(contentsOf: url as URL) {
let image = UIImage(data: imageData as Data)
// Do something with the image.
if(thingGoWrong) {
//show error message.
self.showErrorMessage(text: "Failed to read image.")
return
}
if (finalOperationSucceeded) {
self.extensionContext!.completeRequest(returningItems: nil, completionHandler: nil)
}
}
} else {
// Display error dialog for not supported content. Though we should never receive any such thing.
self.showErrorMessage(text: error?.localizedDescription)
}
}
}
if attachment.hasItemConformingToTypeIdentifier(contentTypeText) {
attachment.loadItem(forTypeIdentifier: contentTypeText, options: nil) {
data, error in if error == nil {
let text = data as! String
// do something with the text
if (textOpSucceeded) {
self.extensionContext!.completeRequest(returningItems: nil, completionHandler: nil)
}
}
}
}
}
}
Текстовая часть расширения общего ресурса работает, как и ожидалось, но если я попытаюсь отправить изображение в приложение.Я получил этот ответ.
Примечание:
- Тот же код работает нормально при тестировании на
iOS 11.4
- Я тестировал на
iPhone 6S
симулятор iOS 12.0
там, где это не удалось.