Mam następujący kod do odczytu w przekazanych adresach URL. Jestem testowania to z app Pocket
i chociaż hasItemConformingToTypeIdentifier
wraca TAK dla kUTTypeURL
, próbuje załadować go zwraca błąd zamiast stwierdzającUdostępnij rozszerzenie loadItemForTypeIdentifier zwraca błąd dla NSURL
„klasy wartość nieoczekiwane.”
. Jeśli spróbuję załadować go jako element i debugować, stwierdzam, że przekazany obiekt jest w rzeczywistości tylko tytułem strony, a nie adresem URL. Jak czytać adres URL?
NSURL *pageURL = nil;
for (NSExtensionItem *item in self.extensionContext.inputItems) {
for (NSItemProvider *itemProvider in item.attachments) {
if ([itemProvider hasItemConformingToTypeIdentifier: (NSString*) kUTTypeURL]) {
[itemProvider loadItemForTypeIdentifier:(NSString*) kUTTypeURL options:nil completionHandler:^(id <NSSecureCoding> urlItem, NSError *error) {
if ([((NSObject*)urlItem) isKindOfClass: [NSURL class]]) {
pageURL = [((NSURL*)urlItem) absoluteString];
}
}];
}
}
}
Czy to działa poprawnie, jeśli przetestujesz go za pomocą Safari zamiast Pocket? –
Tak, działa tak samo w przypadku wszystkich innych aplikacji, które udostępniają łącza/adresy URL itp. W jakiś sposób mają problemy z Pocket. Naprawdę dziwne jest to, jak przechodzi pierwszy warunek "if", ale w drugim nie jest w stanie pobrać prawidłowego adresu URL, a zamiast tego zwraca tytuł strony jako zwykły tekst. Próbowałem nawet różnych innych typów danych, takich jak NSData itp., Ale wszystkie zwracają zero lub tytuł strony. Nie widzę, jak inne aplikacje, takie jak Wunderlist, są w stanie prawidłowo odczytać adres URL z Pocket. – strangetimes
@strangetimes - Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Właśnie wpadłem na ten sam problem i waliłem głową w klawisze, próbując dowiedzieć się, w jaki sposób inne aplikacje pobierają adres URL z Pocket. – jrtilson