Widok aplikacji rozszerzenia akcji iOS 8 ma interfejs UIWebView. Kiedy otwieram to rozszerzenie działania w Safari, a następnie aplikacja rozszerzenia wyświetla UIWebView z mobilnego adresu URL Safari.UIWebView iOS 8 Awaria akcji rozszerzenia w iOS 8 mobilnego safari
Aplikacja rozszerzeń czasami się zawiesza podczas ładowania strony internetowej lub przewija ją w przypadku niektórych stron internetowych, takich jak nytimes.com.
Wiem, że użyteczna pamięć aplikacji rozszerzenia zależy od mobilnego Safari.
Ale stwierdziłem, że "Niesamowity zrzut ekranu dla Safari" nie ulega awarii. (https://itunes.apple.com/us/app/awesome-screenshot-for-safari/id918780145)
Zastanawiam się, jak zapobiec awarii aplikacji rozszerzenia akcji.
@interface ActionViewController()
@property(strong,nonatomic) IBOutlet UIImageView *imageView;
@property (strong, nonatomic) IBOutlet UIWebView *webView;
@end
@implementation ActionViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSExtensionItem *item = self.extensionContext.inputItems.firstObject;
NSItemProvider *itemProvider = item.attachments.firstObject;
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) {
__weak typeof(self) weakSelf = self;
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(id<NSSecureCoding> item, NSError *error) {
if (error) {
[weakSelf.extensionContext cancelRequestWithError:error];
return;
}
if (![(NSObject *)item isKindOfClass:[NSURL class]]) {
NSError *unexpectedError = [NSError errorWithDomain:NSItemProviderErrorDomain
code:NSItemProviderUnexpectedValueClassError
userInfo:nil];
[weakSelf.extensionContext cancelRequestWithError:unexpectedError];
return;
}
NSURL *url = (NSURL *)item;
[weakSelf.webView loadRequest:[NSURLRequest requestWithURL:url]];
}];
} else {
NSError *unavailableError = [NSError errorWithDomain:NSItemProviderErrorDomain
code:NSItemProviderItemUnavailableError
userInfo:nil];
[self.extensionContext cancelRequestWithError:unavailableError];
}
}
czy masz jakiś dziennik błędów? – ytbryan
Jest w porządku w trybie Simulator lub Debugowanie, ale czasami się zawiesza w trybie rzeczywistym. Nie mam żadnego kodu do rozszerzenia aplikacji, tuż nad kodami. – dobiho
Mam DOKŁADNĄ SAMĄ SUPER ANNOYING problem i czekam na wieki, aby komentować w tym poście, dopóki nie otrzymam 50 punktów :). Czy masz jakieś rozwiązanie? W takim przypadku podejrzewam, że jest to limit alokacji dla JavaScript do 10 MB (patrz [tutaj] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/index.html#// apple_ref/occ/instm/UIWebView/stringByEvaluatingJavaScriptFromString :)). Czy wiesz, czy witryny, na których następuje awaria, mają dodatkową aktywność JS? – Antenehs