privada navegacion mas google descargar cuenta como apple app iphone xcode safari automator

iphone - navegacion - itunes



Abra automáticamente el Depurador Safari cuando se inicie iPhone Simulator (5)

El depurador web iOS en Safari son las rodillas de la abeja, pero se cierra cada vez que se reinicia el simulador. No solo es molesto volver a abrirlo desde el menú después de cada compilación, sino que también es complicado depurar cualquier comportamiento que ocurra durante el inicio.

¿Existe una manera de configurar un activador en Xcode para abrir automáticamente el depurador Safari después de cada compilación, o tal vez una forma de crear un script de shell o una acción de Automator para hacer una compilación y abrir inmediatamente el depurador?


Ampliando la respuesta del @ Prisoner, si usa WKWebView, podría:

let contentController:WKUserContentController = WKUserContentController() let pauseForDebugScript = WKUserScript(source: "window.alert(/"Go, turn on Inspector, I''ll hold them back!/")", injectionTime: WKUserScriptInjectionTime.AtDocumentStart, forMainFrameOnly: true) contentController.addUserScript(pauseForDebugScript) let config = WKWebViewConfiguration() config.userContentController = contentController //Init browser with configuration (our injected script) browser = WKWebView(frame: CGRect(x:0, y:0, width: view.frame.width, height: containerView.frame.height), configuration:config)

Lo importante también es implementar el controlador de WKUIDelegate protocolo WKUIDelegate

//MARK: WKUIDelegate func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void) { let alertController = UIAlertController(title: message, message: nil, preferredStyle: UIAlertControllerStyle.Alert); alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel) { _ in completionHandler()} ); self.presentViewController(alertController, animated: true, completion: {}); }

y una pequeña cosa solo en caso de que pueda tener un UIAlertController:supportedInterfaceOrientations was invoked recursively error agregar la siguiente extensión (de esta respuesta SO )

extension UIAlertController { public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return UIInterfaceOrientationMask.Portrait } public override func shouldAutorotate() -> Bool { return false } }


Combinando la respuesta de Tom con mi solución, primero haga lo siguiente:

  • Crea una aplicación como Tom describe arriba
  • En "Preferencias del sistema -> Seguridad y privacidad -> Privacidad -> Accesibilidad", agregue su nueva aplicación de script y asegúrese de que tenga permiso para controlar su computadora

Ahora, estoy usando cordova y desde la línea de comandos las siguientes compilaciones, ejecuta el emulador y abre la consola de depuración de safari:

cordova build ios; cordova emulate ios; open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app; sleep 1 ; open /PATH/TO/OpenDevelop.app/

Asegúrese de reemplazar / PATH / TO / con la ruta apropiada donde guardó su script.


Esta es una solución parcial. Esto abre la ventana de depuración de Safari con un clic, lo cual es mucho mejor pero no es automático.

Abra el Script Editor en su mac (Comando + barra espaciadora y escriba en el Editor de secuencias de comandos)

Pega en este código:

-- `menu_click`, by Jacob Rus, September 2006 -- -- Accepts a list of form: `{"Finder", "View", "Arrange By", "Date"}` -- Execute the specified menu item. In this case, assuming the Finder -- is the active application, arranging the frontmost folder by date. on menu_click(mList) local appName, topMenu, r -- Validate our input if mList''s length < 3 then error "Menu list is not long enough" -- Set these variables for clarity and brevity later on set {appName, topMenu} to (items 1 through 2 of mList) set r to (items 3 through (mList''s length) of mList) -- This overly-long line calls the menu_recurse function with -- two arguments: r, and a reference to the top-level menu tell application "System Events" to my menu_click_recurse(r, ((process appName)''s ¬ (menu bar 1)''s (menu bar item topMenu)''s (menu topMenu))) end menu_click on menu_click_recurse(mList, parentObject) local f, r -- `f` = first item, `r` = rest of items set f to item 1 of mList if mList''s length > 1 then set r to (items 2 through (mList''s length) of mList) -- either actually click the menu item, or recurse again tell application "System Events" if mList''s length is 1 then click parentObject''s menu item f else my menu_click_recurse(r, (parentObject''s (menu item f)''s (menu f))) end if end tell end menu_click_recurse menu_click({"Safari", "Develop", "Simulator", "index.html"})

Una vez que el simulador se haya abierto, haga clic en ejecutar en su secuencia de comandos (es posible que deba permitir el editor de secuencias de comandos en la configuración la primera vez).

(Opcional) Puede guardar sus scripts como una aplicación para no tener que tener abierto el editor de scripts.


Hay una pregunta que debe marcarse como un duplicado que describa el uso de setTimeout () para darle tiempo suficiente para cambiar las ventanas a Safari y establecer un punto de interrupción.

Algo como esto, donde startMyApp es la función bootstrap de tu aplicación:

setTimeout(function () { startMyApp(); }, 20000);

Es super gueto, pero funciona. También he enviado una solicitud de función a través de http://www.apple.com/feedback/safari.html para cerrar el ciclo.


Humm, no creo que puedas hacer eso, pero puedes simplemente "CTRL + R" en el depurador web.