È possibile eseguire uno screenshot della zona visibile corrente della visualizzazione Web in Safari da un'estensione di condivisione? Potrei usare Windows, ma l'applicazione UIA non è supportata sulle estensioni, quindi non posso accedere a quella finestra.Screenshot Safari da Share Extension
risposta
Non è possibile poiché non è possibile raggiungere UIApplicazione da un'estensione. Non puoi ottenere il primo UIWindow, che è il livello di Safari, quindi devi giocare con il file di pre-elaborazione di Javascript che hanno le estensioni. Quindi, basta creare un file Javascript che, una volta inviato a Safari, generi una stringa base64 con i dati dell'immagine della zona visibile corrente. Prendi quella stringa attraverso l'identificatore kUTTypePropertyList nella tua estensione. Dal momento che dovrebbe essere NSData, generare UIImage da lì, usando +imageWithData
. Questo è quello che stai cercando, senza dover caricare di nuovo la pagina, evitando un secondo carico e una brutta immagine se la pagina web richiede un login.
Per quanto ne so, non è possibile a meno che non si invochi l'API che è necessario in modo dinamico, e anche così si potrebbe incorrere in problemi di autorizzazione di contesto e problemi di approvazione App Store.
Un'alternativa potrebbe essere passando l'URL Safari in corso al proprio interno, caricarla utilizzando un UIWebView nascosta e rendere questa visione in un UIImage, ma si perderanno le informazioni correnti zona visibile ...
Questo è quello che sto facendo attualmente, ma non riesco a ottenere la zona visibile attuale l'utente e io devo caricare la stessa pagina web due volte (safari e la mia UIWebView nascosta). Immagino che questa sia la parte che non ci hanno detto dell'estensibilità, quanto sia limitata. –
Questo approccio fallirà anche per le pagine Web in cui l'utente deve effettuare il login. – orkoden
yes non può fare una ricarica per alcuni casi –
Modifica: quindi il sotto funziona nel simulatore ma fa non lavoro sul dispositivo. Al momento sto cercando una soluzione.
Non è possibile ottenere solo l'area visibile di Safari, ma è possibile ottenere uno screenshot con un po 'di ingegno. Il seguente metodo cattura uno screenshot da ShareViewController.
func captureScreen() -> UIImage
{
// Get the "screenshot" view.
let view = UIScreen.mainScreen().snapshotViewAfterScreenUpdates(false)
// Add the screenshot view as a subview of the ShareViewController's view.
self.view.addSubview(view);
// Now screenshot *this* view.
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, false, 0);
self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Finally, remove the subview.
view.removeFromSuperview()
return image
}
questo è il modo approvato per catturare lo screenshot di una pagina web in un prolungamento quota:
for (NSExtensionItem *item in self.extensionContext.inputItems) {
for (NSItemProvider *itemProvider in item.attachments) {
[itemProvider loadPreviewImageWithOptions:@{NSItemProviderPreferredImageSizeKey: [NSValue valueWithCGSize:CGSizeMake(60.0f, 60.0f)]} completionHandler:^(UIImage * item, NSError * _Null_unspecified error) {
// Set the size to that desired, however,
// Note that the image 'item' returns will not necessarily by the size that you requested, so code should handle that case.
// Use the UIImage however you wish here.
}];
}
}
- 1. Safari Extension, Fluid App
- 2. utilizzando jQuery in Safari Extension
- 3. Condividi testo e contenuti multimediali con WhatApp Share Extension
- 4. Not Getting Success/Fail callback per Share Extension tramite AFNetworking
- 5. openURL da App Extension
- 6. Invia il testo selezionato da Safari all'app installata tramite iOS 8 Action Extension?
- 7. Postgres plpythonu estensione non esiste in /usr/pgsql-9.3/share/extension
- 8. Regola CSS Modernizr ignorata da Safari (Mobile Safari pure)
- 9. Accesso a Swift Extension da Objective-C
- 10. cosa significa "(include_path = '.:/Usr/share/pera:/usr/share/php')"?
- 11. IEnumerable Extension
- 12. Gli screenshot di PhantomJS non mostrano testo
- 13. Android Share Via Dialog
- 14. versioni PHP "market share"
- 15. Facebook share cache
- 16. Ottenere uno screenshot da una pagina ASP.Net
- 17. Come disabilitare lo screenshot da un'applicazione Android?
- 18. WebDialog share su Facebook quando l'utente rimuove un'applicazione da impostazioni
- 19. Avvia safari da un'applicazione Mac
- 20. CSP nonce ignorato da Safari
- 21. jquery border irregolare crollo safari safari
- 22. WKWebView Screenshot
- 23. WIX Office Detection Extension
- 24. Impossibile eseguire il debug di iOS9 Share su Xcode
- 25. Docker compose - share volume Nginx
- 26. Google+ Share Smesso di funzionare
- 27. Facebook Share Data URI Image
- 28. Chrome Extension Manifest 'Corrispondenze'
- 29. Screenshot Webdriver
- 30. C# Shell Extension
Puoi fornire un frammento di codice del file js di esempio? – iMash
@skozz Ciao, sto cercando di usare html2canvas per generare l'immagine, ma come restituirla all'estensione. Ho anche provato a restituire document.body ma non funziona. –