SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
WinObjc
Windows Bridge para iOS
Javier Suárez Ruiz
Agenda
1. Universal Windows Platform
2. Windows Bridge para iOS
3. Herramientas
4. Proyecciones
5. Roadmap
6. Preguntas
Universal Windows Platform
El viaje de la convergencia
IoT
HoloLens
Surface Hub
Windows Desktop
Windows Phone
Xbox
ONE CORE OS
ONE APP PLATFORM
ONE STOREWindows 10
El viaje de la convergencia
Phone
Tablet
Pequeña
2-in-1s
(Tablet or Laptop)
PC
& All-in-OnesPhablet Tablet Grande
Portátil
Xbox
IoT
Surface Hub
Holografías
Windows 10
Universal Windows Platform
De donde venga tu código, puedes llevarlo a Windows
XboxIoT
Universal
Windows Platform
Middleware
Middleware Partners (e.g., Xamarin)
Game Engine Partners (e.g., Unity)
Plataforma Windows
Universal Windows 8 Apps (C++/C#/JS)
Universal Windows 10 Apps (C++/C#/JS)
Project Centennial (Classic Apps)
Plataforma Web
Microsoft Edge HTML Engine
Cordova Tooling (HTML/JS)
Hosted Web Apps (HTML/JS)
Otras plataformas móviles
Project Islandwood (Objective C/C++)
¿Qué es el Windows Bridge para
iOS?
Añade funcionalidad, no la reemplaza
No es un “sandbox”
Añade acceso a herramientas Windows y APIs
Implementa APIs iOS
Promover la reutilización de código
Fácil de extender
Open Source
Abierto a comunidad
Objetivos
Herramientas
Antiguamente conocido como “Project Islandwood”.
Ahora llamado WinObjC.
Es un conjunto de herramientas que permiten migrar aplicaciones iOS a Windows 10.
Proyecto Open Source
https://github.com/Microsoft/WinObjC/
¿Qué es?
¿Qué es?
Se soporta Objective-C
• Compilador y Runtime
APIs
• iOS API (reducida)
Herramientas
• Editor / Workflow
• Importador de proyectos
¿Cómo funciona?
UWP
ARM32 / x86 libobjc2
Objective-C Compiler and Runtime
iOS APIs Storyboards y XIBs Interoperatibilidad
XAML
Proyecciones APIs
WinRT
iOS Frameworks y herramientas Integración Visual Studio y herramientas
• VSImporter, herramienta que permite crear una solución .sln
a partir de un Proyecto Xcode
• Añadido Soporte a APIs principals de Foundation y Cocoa
Touch
• Visual Studio utiliza el compilador CLANG para compilar
código Objective-C
• Posibilidad de depuración integrada en el IDE
• Proyecciones permiten añadir funcionalidades nativas de
Windows 10
¿Cómo funciona?
DEMODEMODEMO
Descargando la herramienta
App Analysis Tool
App Analysis Tool
Herramienta que permite obtener
un informe detallado de
compatibilidad de un paquete con
el Bridge.
Herramienta web, no require ni
descargas ni instalaciones.
App Analysis Tool
El informe indica feedback sobre
elementos soportados,
parcialmente soportados y aquellos
que no se soportan.
Ante elementos no soportados, la
herramienta facilita
recomendaciones. Por ejemplo:
MapKit no esta soportado, si Bing
Maps y control XAML.
DEMODEMODEMO
Analizando un paquete con
App Analysis Tool
Más Herramientas
Herramientas
Desarrollo integrado en Visual Studio
Proyectos Xcode
importados a
Visual Studio
Lenguaje
soportado:
colores,
autocompletad
o
Debugging:
breakpoints,
stack traces, …
Universal API
Interop
Herramientas
Proyecto Xcode
projects importado a
Visual Studio
Configuración del
Proyecto compartida
importada desde
Xcode
DEMODEMODEMO
Primer vistazo a las
herramientas
Es un “Puente”, no un emulador o
máquina virtual
Las Apps Bridge son UWP Apps
NO es una máquina virtual o emulador.
• Se tiene runtime de Objective-C propio.
• Reimplementadas librerías como Foundation y Cocoa Touch.
• CLANG integrado en Visual Studio permite compilar código
Objective-C.
Las Apps Bridge son UWP Apps
• Compilado a aplicación nativa UWP.
• Se puede distribuir vía Windows Store.
• Corre en distintas familias de dispositivos Windows 10.
• Se pueden consumer APIs Windows directamente desde
Objective-C
• Mapas
• Live Tiles
• Cortana
• Etc
VSImporter
Utilizar VSImporter
1. Acceder a la ruta del Proyecto Xcode.
2. Abrir línea de comandos.
3. En la línea de commandos ejecutar vsimporter.exe.
c:ProjectsMyApp> ....binvsimporter.exe
c:ProjectsMyApp> ....binvsimporter.exe
Utilizar VSImporter
• Se puede utilizer la opción –i para utilizer el modo interactivo. El
modo interactivo permite seleccionar la configuración específica del
Proyecto Xcode que se desea importer.
• Utilizando –format podemos especificar el tipo de solución a crear
winstore8.1, winphone8.1, o winstore10.
DEMODEMODEMO
De Xcode a Visual Studio
Gestión de UI
Gestión de UI
• El Bride Windows de iOS permite controlar
como se muestra la aplicación.
• Incluye propiedades básicas que permiten
gestionar el tamaño de la pantalla, la forma de
la adaptación de la UI, etc.
Gestión de UI
Magnification
Escala la aplicación por la cantidad especificada.
Auto-Magnification
Establece el valor del factor de magnificación a tamaño adecuado de la ventana.
FixedWidth
Establece el ancho de la aplicación. Un valor de 0 significa que el ancho
corresponde al ancho de la ventana.
FixedHeight
Establece el alto de la aplicación. Un valor de 0 significa que el ancho corresponde al
alto de la ventana.
Gestión de UI
SizeWindowToFit
Se establece esta propiedad a TRUE si se quiere que WinObjC automáticamente
cambie el tamaño de UIWindow para coincidir con el tamaño de la aplicación.
Necesario si la aplicación usa Auto Layout.
Storyboards y
AutoLayout
Partimos de XCode
Nuestra aplicación
La interfaz se implementa en
Main.storyboard, utilizando un Storyboard
definiendo la lógica en el controlador
asociado, ViewController.m.
Utilizando VSImporter
VSImporter crea una solución Visual Studio desde el Proyecto original Xcode
preservando assets, headers y código.
La “magia” se encuentra en el importador y en el runtime.
Repasamos el concepto de Storyboards
Un Storyboard en Xcode es un contenedor de escenas que corresponden con las
vistas y objetos usadas en la UI de la App.
El Storyboard permite representar desde una vista individual a multiples escenas
conectadas por segues.
Un archivo NIB es el binario compilado del XIB. El importador, para crear y
configurar el Proyecto Visual Studio utiliza una herramienta llamada Xib2Nib
encargada de tomar los archivos XIB para generar los NIB.
Xib2Nib
Esta herramienta añade Soporte
permitiendo importer Storyboards y NIBs.
Toa los archivos XIB, itera sobre los XML y
construye nuevos plist/NIB por cada
Storyboard encontrado en el Proyecto.
Partimos de XCode
SizeWindowToFit
Se establece esta propiedad a TRUE si se quiere que WinObjC automáticamente
cambie el tamaño de UIWindow para coincidir con el tamaño de la aplicación.
Necesario si la aplicación usa Auto Layout.
Ejecutar y redimensionar la App
Si ejecutamos la aplicación se visualizará la misma UI mostrada en el simulador de
Xcode.
Si se redimensiona la App, se puede observer como responde de forma adaptativa.
DEMODEMODEMO
App utilizando Storyboard y
AutoLayout
Depuración
Breakpoints
El Bride soporta depuración
en tiempo de ejecución con
el uso de breakpoints.
Podemos añadir puntos de
rupture (1), cuando estamos
parados en el mismo
podemos continuar (2), o
utilizar las opciones Step Into
(3), Step Over(4) y Step Out
(5).
Inspección de objetos
Objetos de clases
Objective-C pueden
inspeccionarse (1)
además de poder ver
variables y propiedades
(2).
NSNumber, NSString, NSArray y NSDictionary
Las clases
NSNumber,
NSString, NSArray
y NSDictionary se
pueden ver desde
las ventanas de
Locals y Watch.
DEMODEMODEMO
Depurando App iOS desde
Visual Studio
Proyecciones
¿Qué son las proyecciones?
WinRT es una API C++ basada en COM. Windows define lo
que conocemos como proyecciones para permitir usar la API
desde diferentes lenguajes de Desarrollo:
• .NET (C# / VB.NET)
• JavaScript
¿Qué son las proyecciones?
• El Bridge de iOS añade una proyección para poder usar APIs
de Windows 10 desde Objective-C.
• Se utilizan los ficheros de cabecera para poder utilizar
proyecciones.
• No solo nos permiten añadir características de plataforma
(Live Tiles o Cortana por ejemplo) sino además reemplazar
partes no disponibles (Mapas por ejemplo).
Usando proyecciones: Live Tiles
Para crear Live Tiles se debe:
1. Crear payload XML que describa el tile.
2. Crear objecto de notificación del Tile y pasar el
XML.
3. Crear objeto que permita actualizar el Tile.
4. Pasar el objeto de notificación del Tile al que
actualiza el Tile.
Usando proyecciones: Live Tiles
// Create an XML payload that describes the tile - https://msdn.microsoft.com/windows/uwp/controls-and-patterns/tiles-and-
notifications-creating-tiles
WDXDXmlDocument* tileXml = [WDXDXmlDocument make];
// Build the XML structure
NSString *xmlDocument = @"<tile><visual>n";
// Small Tile
xmlDocument = [xmlDocument stringByAppendingString:@"<binding
template="TileSmall"><group><subgroup><text>Button!</text></subgroup></group></binding>n"];
// Medium Tile
xmlDocument = [xmlDocument stringByAppendingString:[NSString stringWithFormat:@"<binding
template="TileMedium"><group><subgroup><text hint-style="subtitle">Pressed at:</text><text hint-
style="captionSubtle">%@</text></subgroup></group></binding>n", timeDateString]];
// Large Tile
xmlDocument = [xmlDocument stringByAppendingString:[NSString stringWithFormat:@"<binding
template="TileWide"><group><subgroup><text hint-style="subtitle">Button pressed at:</text><text hint-
style="captionSubtle">%@</text></subgroup></group></binding>n", timeDateString]];
// Cleanup on XML
xmlDocument = [xmlDocument stringByAppendingString:@"</visual></tile>n"];
[tileXml loadXml:xmlDocument];
WUNTileNotification *notification = [WUNTileNotification makeTileNotification: tileXml];
// Notify the user via live tile
WUNTileUpdater* tileUpdater = [WUNTileUpdateManager createTileUpdaterForApplication];
[tileUpdater update:notification];
Usando proyecciones: Live Tiles
A tener en cuenta:
• Windows.UI.Notifications.TileUpdateManager becomes
WUNTileUpdateManager
• Windows.Data.Xml.Dom.XmlDocument becomes
WDXDXmlDocument
Debemos añadir cabeceras:
#ifdef WINOBJC
#import <UWP/WindowsUINotifications.h>
#import <UWP/WindowsDataXmlDom.h>
#endif
DEMODEMODEMO
Veamos varias proyecciones
Roadmap
¿Es oro todo lo que reluce?
Roadmap
Recientemente (últimos meses) añadido soporte a:
• Storyboard/XIB
• ARM
• Añadidas máquinas virtuales Azure con todo preparado para usar el Bridge.
Roadmap
Roadmap (Próximamente)
En el Roadmap:
• Mejorar Soporte UIKit.
• Mejoras en KVO/KVC.
• Mejorar soporte CoreAnimation.
• Mejorar soporte CoreGraphics.
• Mejorar soporte seguridad.
• Soporte a frameworks de terceros muy usados como AFNetworking, SDK de Facebook, Bolts, etc.
• Soporte para MediaCapture.
• Soporte mapas.
• Browser de APIs soportadas. Así poder ver de un vistazo que se soporta y que no.
• Anotaciones Objective-C en Visual Studio.
• Etc.
Soporte a librerías de terceros
Librerías de terceros soportadas
KeyChainItemWrapper
• Soportada
OAuthConsumer
• Soportada
AFNetworking
• Versión 2 parcialmente soportada.
Bolts
• Parcialmente soportado.
Facebook iOS SDK
• Escenarios básicos como Login funcionan. Parcialmente soportado. Alta prioridad.
GTMLogger
• Parcialmente soportado.
JSONKit
• Parcialmente soportado.
Librerías de terceros soportadas
OpenAL
• Parcialmente soportado.
OpenUDID
• Parcialmente soportado.
Reachability
• Parcialmente soportado. No funciona UI si la funcionalidad principal.
iOS Bridge, mejores prácticas
• Encapsular código específico del Sistema utilizando patrones
de diseño.
• Utilizar APIs Windows 10 utilizando el Bridge.
• Actualizar con frecuencia.
• Permanecer al día con respect al GitHub del Bridge.
Preguntas y respuestas.
¿Dudas?
&
WinObjc
Javier Suárez Ruiz

Contenu connexe

Tendances

Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureXamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureJavier Suárez Ruiz
 
Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Javier Suárez Ruiz
 
Interfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsInterfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsJavier Suárez Ruiz
 
Microsoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinMicrosoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinJavier Suárez Ruiz
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!Javier Suárez Ruiz
 
Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Crear Apps Multiplataforma compartiendo la mayor cantidad con XamarinCrear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Crear Apps Multiplataforma compartiendo la mayor cantidad con XamarinJavier Suárez Ruiz
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinJavier Suárez Ruiz
 
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.FormsIntroducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.FormsJavier Suárez Ruiz
 
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinCodemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinJavier Suárez Ruiz
 
Novedades en Visual Studio Online
Novedades en Visual Studio OnlineNovedades en Visual Studio Online
Novedades en Visual Studio OnlineJavier Suárez Ruiz
 
Introducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossIntroducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossJavier Suárez Ruiz
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform BridgesJavier Suárez Ruiz
 
Arquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appArquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appBorja García Cueto
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLSorey García
 

Tendances (20)

Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureXamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
 
Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4
 
.Net Conf Sevilla 2018
.Net Conf Sevilla 2018.Net Conf Sevilla 2018
.Net Conf Sevilla 2018
 
Xamarin REvolve 2016
Xamarin REvolve 2016Xamarin REvolve 2016
Xamarin REvolve 2016
 
Interfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsInterfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.Forms
 
Desktop App Converter
Desktop App ConverterDesktop App Converter
Desktop App Converter
 
Microsoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinMicrosoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller Xamarin
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Introduccion a Xamarin
Introduccion a XamarinIntroduccion a Xamarin
Introduccion a Xamarin
 
Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
 
Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Crear Apps Multiplataforma compartiendo la mayor cantidad con XamarinCrear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller Xamarin
 
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.FormsIntroducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
 
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps XamarinCodemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
Codemotion 2015: UI Tests, Test Cloud y CI con Apps Xamarin
 
Novedades en Visual Studio Online
Novedades en Visual Studio OnlineNovedades en Visual Studio Online
Novedades en Visual Studio Online
 
Introducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossIntroducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCross
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform Bridges
 
Arquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appArquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera app
 
Introducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAMLIntroducción a Xamarin Forms con XAML
Introducción a Xamarin Forms con XAML
 

En vedette

Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...Javier Suárez Ruiz
 
Trucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsTrucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsJavier Suárez Ruiz
 
Xamarin Dev Days Madrid 2017 - Xamarin.Forms
Xamarin Dev Days Madrid 2017 -  Xamarin.FormsXamarin Dev Days Madrid 2017 -  Xamarin.Forms
Xamarin Dev Days Madrid 2017 - Xamarin.FormsJavier Suárez Ruiz
 
[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform BridgesJavier Suárez Ruiz
 
Windows 10: One SDK to rule them all
Windows 10: One SDK to rule them allWindows 10: One SDK to rule them all
Windows 10: One SDK to rule them allJavier Suárez Ruiz
 
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Javier Suárez Ruiz
 
Reconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformReconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformJavier Suárez Ruiz
 
Regreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de MicrosoftRegreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de MicrosoftJavier Suárez Ruiz
 
Introducción al desarrollo de Apps en Windows 10
Introducción al desarrollo de Apps en  Windows 10Introducción al desarrollo de Apps en  Windows 10
Introducción al desarrollo de Apps en Windows 10Javier Suárez Ruiz
 
Windows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasWindows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasJavier Suárez Ruiz
 
Windows 10: Hel10 World! - Novedades XAML
Windows 10: Hel10 World! - Novedades XAMLWindows 10: Hel10 World! - Novedades XAML
Windows 10: Hel10 World! - Novedades XAMLJavier Suárez Ruiz
 
Interfaces Adaptativas en Windows 10
Interfaces Adaptativas en Windows 10Interfaces Adaptativas en Windows 10
Interfaces Adaptativas en Windows 10Javier Suárez Ruiz
 
Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One Javier Suárez Ruiz
 
Creando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox OneCreando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox OneJavier Suárez Ruiz
 

En vedette (17)

Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
Xamarin Hol - Módulo V: Mobile DevOps con Visual Studio Team Services y Hocke...
 
Trucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsTrucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.Forms
 
Xamarin Dev Days Madrid 2017 - Xamarin.Forms
Xamarin Dev Days Madrid 2017 -  Xamarin.FormsXamarin Dev Days Madrid 2017 -  Xamarin.Forms
Xamarin Dev Days Madrid 2017 - Xamarin.Forms
 
[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges
 
Windows 10: One SDK to rule them all
Windows 10: One SDK to rule them allWindows 10: One SDK to rule them all
Windows 10: One SDK to rule them all
 
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
 
Windows 10: Novedades en XAML
Windows 10: Novedades en XAMLWindows 10: Novedades en XAML
Windows 10: Novedades en XAML
 
Reconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformReconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows Platform
 
Regreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de MicrosoftRegreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de Microsoft
 
Introducción al desarrollo de Apps en Windows 10
Introducción al desarrollo de Apps en  Windows 10Introducción al desarrollo de Apps en  Windows 10
Introducción al desarrollo de Apps en Windows 10
 
Windows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasWindows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces Adaptativas
 
Taller Windows 10 TLP Innova
Taller Windows 10 TLP InnovaTaller Windows 10 TLP Innova
Taller Windows 10 TLP Innova
 
Windows 10: Hel10 World! - Novedades XAML
Windows 10: Hel10 World! - Novedades XAMLWindows 10: Hel10 World! - Novedades XAML
Windows 10: Hel10 World! - Novedades XAML
 
Interfaces Adaptativas en Windows 10
Interfaces Adaptativas en Windows 10Interfaces Adaptativas en Windows 10
Interfaces Adaptativas en Windows 10
 
Novedades en XAML
Novedades en XAMLNovedades en XAML
Novedades en XAML
 
Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One
 
Creando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox OneCreando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox One
 

Similaire à WinObjC: Windows Bridge para iOS

Entornos de desarrollo para móviles
Entornos de desarrollo para móvilesEntornos de desarrollo para móviles
Entornos de desarrollo para móvilesangelo4037
 
Articulo tipos de ide y ajax control toolkit
Articulo   tipos de ide y ajax control toolkitArticulo   tipos de ide y ajax control toolkit
Articulo tipos de ide y ajax control toolkitCesar Escalante
 
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Luis Beltran
 
Desarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCrossDesarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCrossIvan Rodrigo Toledo Ivanovic
 
Desarrollo de apps multiplataforma Movil
Desarrollo de apps multiplataforma MovilDesarrollo de apps multiplataforma Movil
Desarrollo de apps multiplataforma MovilIng Erick Guardado
 
Microsoft Visual Studio Universidad OYM Seccion 0435
Microsoft Visual Studio Universidad OYM Seccion 0435Microsoft Visual Studio Universidad OYM Seccion 0435
Microsoft Visual Studio Universidad OYM Seccion 0435Scarlett Rodriiguez
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Antonio Palomares Sender
 
Programación Android | 00. Introducción
Programación Android | 00. IntroducciónProgramación Android | 00. Introducción
Programación Android | 00. IntroducciónDaniel Aparicio Arriola
 
Novedades visual studio 2015
Novedades visual studio 2015Novedades visual studio 2015
Novedades visual studio 2015Francesc Jaumot
 
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsTech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsJavier Suárez Ruiz
 
Herramientas de desarrollo de android
Herramientas de desarrollo de androidHerramientas de desarrollo de android
Herramientas de desarrollo de androidJaqueline Luna
 

Similaire à WinObjC: Windows Bridge para iOS (20)

Entornos de desarrollo para móviles
Entornos de desarrollo para móvilesEntornos de desarrollo para móviles
Entornos de desarrollo para móviles
 
Articulo tipos de ide y ajax control toolkit
Articulo   tipos de ide y ajax control toolkitArticulo   tipos de ide y ajax control toolkit
Articulo tipos de ide y ajax control toolkit
 
App inventor
App inventorApp inventor
App inventor
 
Estructuras sdk
Estructuras sdkEstructuras sdk
Estructuras sdk
 
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
Azure Tech Frogs La vida despues de Xamarin NET MAUI y el desarrollo de apps....
 
Desarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCrossDesarrollando apps multiplataforma con Xamarin y MVVMCross
Desarrollando apps multiplataforma con Xamarin y MVVMCross
 
Desarrollo de apps multiplataforma Movil
Desarrollo de apps multiplataforma MovilDesarrollo de apps multiplataforma Movil
Desarrollo de apps multiplataforma Movil
 
Microsoft Visual Studio Universidad OYM Seccion 0435
Microsoft Visual Studio Universidad OYM Seccion 0435Microsoft Visual Studio Universidad OYM Seccion 0435
Microsoft Visual Studio Universidad OYM Seccion 0435
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)
 
Programación Android | 00. Introducción
Programación Android | 00. IntroducciónProgramación Android | 00. Introducción
Programación Android | 00. Introducción
 
Material rap1
Material rap1Material rap1
Material rap1
 
Novedades visual studio 2015
Novedades visual studio 2015Novedades visual studio 2015
Novedades visual studio 2015
 
Ios
IosIos
Ios
 
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsTech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
 
App inventor
App inventorApp inventor
App inventor
 
Herramientas de desarrollo de android
Herramientas de desarrollo de androidHerramientas de desarrollo de android
Herramientas de desarrollo de android
 
Investigacion 2
Investigacion 2Investigacion 2
Investigacion 2
 
Investigacion 1
Investigacion 1Investigacion 1
Investigacion 1
 
Investigacion 2
Investigacion 2Investigacion 2
Investigacion 2
 

Plus de Javier Suárez Ruiz

Cape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitCape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitJavier Suárez Ruiz
 
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Javier Suárez Ruiz
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersJavier Suárez Ruiz
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.FormsJavier Suárez Ruiz
 
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsMonkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsJavier Suárez Ruiz
 
Crear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsCrear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsJavier Suárez Ruiz
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsJavier Suárez Ruiz
 
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms ShellMonkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms ShellJavier Suárez Ruiz
 
Analizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.FormsAnalizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.FormsJavier Suárez Ruiz
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloJavier Suárez Ruiz
 
Aumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinAumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinJavier Suárez Ruiz
 
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con XamarinPlain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con XamarinJavier Suárez Ruiz
 
Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Javier Suárez Ruiz
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinJavier Suárez Ruiz
 
SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000Javier Suárez Ruiz
 
dotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EnginedotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EngineJavier Suárez Ruiz
 

Plus de Javier Suárez Ruiz (20)

Cape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitCape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community Toolkit
 
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI Handlers
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.Forms
 
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsMonkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
 
Crear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsCrear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.Forms
 
#XamarinUIJuly Summary
#XamarinUIJuly Summary#XamarinUIJuly Summary
#XamarinUIJuly Summary
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms ShellMonkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
 
Analizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.FormsAnalizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.Forms
 
Novedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 PreviewNovedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 Preview
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrollo
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
Aumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinAumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas Xamarin
 
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con XamarinPlain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
 
Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller Xamarin
 
SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000
 
dotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EnginedotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave Engine
 

WinObjC: Windows Bridge para iOS

  • 1. WinObjc Windows Bridge para iOS Javier Suárez Ruiz
  • 2. Agenda 1. Universal Windows Platform 2. Windows Bridge para iOS 3. Herramientas 4. Proyecciones 5. Roadmap 6. Preguntas
  • 4. El viaje de la convergencia IoT HoloLens Surface Hub Windows Desktop Windows Phone Xbox ONE CORE OS ONE APP PLATFORM ONE STOREWindows 10
  • 5. El viaje de la convergencia Phone Tablet Pequeña 2-in-1s (Tablet or Laptop) PC & All-in-OnesPhablet Tablet Grande Portátil Xbox IoT Surface Hub Holografías Windows 10
  • 6. Universal Windows Platform De donde venga tu código, puedes llevarlo a Windows XboxIoT Universal Windows Platform Middleware Middleware Partners (e.g., Xamarin) Game Engine Partners (e.g., Unity) Plataforma Windows Universal Windows 8 Apps (C++/C#/JS) Universal Windows 10 Apps (C++/C#/JS) Project Centennial (Classic Apps) Plataforma Web Microsoft Edge HTML Engine Cordova Tooling (HTML/JS) Hosted Web Apps (HTML/JS) Otras plataformas móviles Project Islandwood (Objective C/C++)
  • 7. ¿Qué es el Windows Bridge para iOS?
  • 8. Añade funcionalidad, no la reemplaza No es un “sandbox” Añade acceso a herramientas Windows y APIs Implementa APIs iOS Promover la reutilización de código Fácil de extender Open Source Abierto a comunidad Objetivos
  • 9. Herramientas Antiguamente conocido como “Project Islandwood”. Ahora llamado WinObjC. Es un conjunto de herramientas que permiten migrar aplicaciones iOS a Windows 10. Proyecto Open Source https://github.com/Microsoft/WinObjC/ ¿Qué es?
  • 10. ¿Qué es? Se soporta Objective-C • Compilador y Runtime APIs • iOS API (reducida) Herramientas • Editor / Workflow • Importador de proyectos
  • 11. ¿Cómo funciona? UWP ARM32 / x86 libobjc2 Objective-C Compiler and Runtime iOS APIs Storyboards y XIBs Interoperatibilidad XAML Proyecciones APIs WinRT iOS Frameworks y herramientas Integración Visual Studio y herramientas
  • 12. • VSImporter, herramienta que permite crear una solución .sln a partir de un Proyecto Xcode • Añadido Soporte a APIs principals de Foundation y Cocoa Touch • Visual Studio utiliza el compilador CLANG para compilar código Objective-C • Posibilidad de depuración integrada en el IDE • Proyecciones permiten añadir funcionalidades nativas de Windows 10 ¿Cómo funciona?
  • 15. App Analysis Tool Herramienta que permite obtener un informe detallado de compatibilidad de un paquete con el Bridge. Herramienta web, no require ni descargas ni instalaciones.
  • 16. App Analysis Tool El informe indica feedback sobre elementos soportados, parcialmente soportados y aquellos que no se soportan. Ante elementos no soportados, la herramienta facilita recomendaciones. Por ejemplo: MapKit no esta soportado, si Bing Maps y control XAML.
  • 17. DEMODEMODEMO Analizando un paquete con App Analysis Tool
  • 19. Herramientas Desarrollo integrado en Visual Studio Proyectos Xcode importados a Visual Studio Lenguaje soportado: colores, autocompletad o Debugging: breakpoints, stack traces, … Universal API Interop
  • 20. Herramientas Proyecto Xcode projects importado a Visual Studio Configuración del Proyecto compartida importada desde Xcode
  • 21. DEMODEMODEMO Primer vistazo a las herramientas
  • 22. Es un “Puente”, no un emulador o máquina virtual
  • 23. Las Apps Bridge son UWP Apps NO es una máquina virtual o emulador. • Se tiene runtime de Objective-C propio. • Reimplementadas librerías como Foundation y Cocoa Touch. • CLANG integrado en Visual Studio permite compilar código Objective-C.
  • 24. Las Apps Bridge son UWP Apps • Compilado a aplicación nativa UWP. • Se puede distribuir vía Windows Store. • Corre en distintas familias de dispositivos Windows 10. • Se pueden consumer APIs Windows directamente desde Objective-C • Mapas • Live Tiles • Cortana • Etc
  • 26. Utilizar VSImporter 1. Acceder a la ruta del Proyecto Xcode. 2. Abrir línea de comandos. 3. En la línea de commandos ejecutar vsimporter.exe. c:ProjectsMyApp> ....binvsimporter.exe c:ProjectsMyApp> ....binvsimporter.exe
  • 27. Utilizar VSImporter • Se puede utilizer la opción –i para utilizer el modo interactivo. El modo interactivo permite seleccionar la configuración específica del Proyecto Xcode que se desea importer. • Utilizando –format podemos especificar el tipo de solución a crear winstore8.1, winphone8.1, o winstore10.
  • 28. DEMODEMODEMO De Xcode a Visual Studio
  • 30. Gestión de UI • El Bride Windows de iOS permite controlar como se muestra la aplicación. • Incluye propiedades básicas que permiten gestionar el tamaño de la pantalla, la forma de la adaptación de la UI, etc.
  • 31. Gestión de UI Magnification Escala la aplicación por la cantidad especificada. Auto-Magnification Establece el valor del factor de magnificación a tamaño adecuado de la ventana. FixedWidth Establece el ancho de la aplicación. Un valor de 0 significa que el ancho corresponde al ancho de la ventana. FixedHeight Establece el alto de la aplicación. Un valor de 0 significa que el ancho corresponde al alto de la ventana.
  • 32. Gestión de UI SizeWindowToFit Se establece esta propiedad a TRUE si se quiere que WinObjC automáticamente cambie el tamaño de UIWindow para coincidir con el tamaño de la aplicación. Necesario si la aplicación usa Auto Layout.
  • 34. Partimos de XCode Nuestra aplicación La interfaz se implementa en Main.storyboard, utilizando un Storyboard definiendo la lógica en el controlador asociado, ViewController.m.
  • 35. Utilizando VSImporter VSImporter crea una solución Visual Studio desde el Proyecto original Xcode preservando assets, headers y código. La “magia” se encuentra en el importador y en el runtime.
  • 36. Repasamos el concepto de Storyboards Un Storyboard en Xcode es un contenedor de escenas que corresponden con las vistas y objetos usadas en la UI de la App. El Storyboard permite representar desde una vista individual a multiples escenas conectadas por segues. Un archivo NIB es el binario compilado del XIB. El importador, para crear y configurar el Proyecto Visual Studio utiliza una herramienta llamada Xib2Nib encargada de tomar los archivos XIB para generar los NIB.
  • 37. Xib2Nib Esta herramienta añade Soporte permitiendo importer Storyboards y NIBs. Toa los archivos XIB, itera sobre los XML y construye nuevos plist/NIB por cada Storyboard encontrado en el Proyecto.
  • 38. Partimos de XCode SizeWindowToFit Se establece esta propiedad a TRUE si se quiere que WinObjC automáticamente cambie el tamaño de UIWindow para coincidir con el tamaño de la aplicación. Necesario si la aplicación usa Auto Layout.
  • 39. Ejecutar y redimensionar la App Si ejecutamos la aplicación se visualizará la misma UI mostrada en el simulador de Xcode. Si se redimensiona la App, se puede observer como responde de forma adaptativa.
  • 42. Breakpoints El Bride soporta depuración en tiempo de ejecución con el uso de breakpoints. Podemos añadir puntos de rupture (1), cuando estamos parados en el mismo podemos continuar (2), o utilizar las opciones Step Into (3), Step Over(4) y Step Out (5).
  • 43. Inspección de objetos Objetos de clases Objective-C pueden inspeccionarse (1) además de poder ver variables y propiedades (2).
  • 44. NSNumber, NSString, NSArray y NSDictionary Las clases NSNumber, NSString, NSArray y NSDictionary se pueden ver desde las ventanas de Locals y Watch.
  • 45. DEMODEMODEMO Depurando App iOS desde Visual Studio
  • 47. ¿Qué son las proyecciones? WinRT es una API C++ basada en COM. Windows define lo que conocemos como proyecciones para permitir usar la API desde diferentes lenguajes de Desarrollo: • .NET (C# / VB.NET) • JavaScript
  • 48. ¿Qué son las proyecciones? • El Bridge de iOS añade una proyección para poder usar APIs de Windows 10 desde Objective-C. • Se utilizan los ficheros de cabecera para poder utilizar proyecciones. • No solo nos permiten añadir características de plataforma (Live Tiles o Cortana por ejemplo) sino además reemplazar partes no disponibles (Mapas por ejemplo).
  • 49. Usando proyecciones: Live Tiles Para crear Live Tiles se debe: 1. Crear payload XML que describa el tile. 2. Crear objecto de notificación del Tile y pasar el XML. 3. Crear objeto que permita actualizar el Tile. 4. Pasar el objeto de notificación del Tile al que actualiza el Tile.
  • 50. Usando proyecciones: Live Tiles // Create an XML payload that describes the tile - https://msdn.microsoft.com/windows/uwp/controls-and-patterns/tiles-and- notifications-creating-tiles WDXDXmlDocument* tileXml = [WDXDXmlDocument make]; // Build the XML structure NSString *xmlDocument = @"<tile><visual>n"; // Small Tile xmlDocument = [xmlDocument stringByAppendingString:@"<binding template="TileSmall"><group><subgroup><text>Button!</text></subgroup></group></binding>n"]; // Medium Tile xmlDocument = [xmlDocument stringByAppendingString:[NSString stringWithFormat:@"<binding template="TileMedium"><group><subgroup><text hint-style="subtitle">Pressed at:</text><text hint- style="captionSubtle">%@</text></subgroup></group></binding>n", timeDateString]]; // Large Tile xmlDocument = [xmlDocument stringByAppendingString:[NSString stringWithFormat:@"<binding template="TileWide"><group><subgroup><text hint-style="subtitle">Button pressed at:</text><text hint- style="captionSubtle">%@</text></subgroup></group></binding>n", timeDateString]]; // Cleanup on XML xmlDocument = [xmlDocument stringByAppendingString:@"</visual></tile>n"]; [tileXml loadXml:xmlDocument]; WUNTileNotification *notification = [WUNTileNotification makeTileNotification: tileXml]; // Notify the user via live tile WUNTileUpdater* tileUpdater = [WUNTileUpdateManager createTileUpdaterForApplication]; [tileUpdater update:notification];
  • 51. Usando proyecciones: Live Tiles A tener en cuenta: • Windows.UI.Notifications.TileUpdateManager becomes WUNTileUpdateManager • Windows.Data.Xml.Dom.XmlDocument becomes WDXDXmlDocument Debemos añadir cabeceras: #ifdef WINOBJC #import <UWP/WindowsUINotifications.h> #import <UWP/WindowsDataXmlDom.h> #endif
  • 54. ¿Es oro todo lo que reluce?
  • 55. Roadmap Recientemente (últimos meses) añadido soporte a: • Storyboard/XIB • ARM • Añadidas máquinas virtuales Azure con todo preparado para usar el Bridge.
  • 57. Roadmap (Próximamente) En el Roadmap: • Mejorar Soporte UIKit. • Mejoras en KVO/KVC. • Mejorar soporte CoreAnimation. • Mejorar soporte CoreGraphics. • Mejorar soporte seguridad. • Soporte a frameworks de terceros muy usados como AFNetworking, SDK de Facebook, Bolts, etc. • Soporte para MediaCapture. • Soporte mapas. • Browser de APIs soportadas. Así poder ver de un vistazo que se soporta y que no. • Anotaciones Objective-C en Visual Studio. • Etc.
  • 58. Soporte a librerías de terceros
  • 59. Librerías de terceros soportadas KeyChainItemWrapper • Soportada OAuthConsumer • Soportada AFNetworking • Versión 2 parcialmente soportada. Bolts • Parcialmente soportado. Facebook iOS SDK • Escenarios básicos como Login funcionan. Parcialmente soportado. Alta prioridad. GTMLogger • Parcialmente soportado. JSONKit • Parcialmente soportado.
  • 60. Librerías de terceros soportadas OpenAL • Parcialmente soportado. OpenUDID • Parcialmente soportado. Reachability • Parcialmente soportado. No funciona UI si la funcionalidad principal.
  • 61. iOS Bridge, mejores prácticas • Encapsular código específico del Sistema utilizando patrones de diseño. • Utilizar APIs Windows 10 utilizando el Bridge. • Actualizar con frecuencia. • Permanecer al día con respect al GitHub del Bridge.