Pues eso… en el anuncio de Visual Studio 2022 (disponible en versiones preview a partir de este verano) se avisa de que .NET MAUI será la forma de crear aplicaciones para móviles y Web multiplataforma.
Si quieres puedes ver el código (e incluso instalarlo) de .NET MAUI usando el enlace que te he puesto antes, que te llevará al proyecto en GitHub.
Por ahora no lo he probado… pero lo probaré y seguramente te comentaré cosas sobre este nuevo entorno de desarrollo (en realidad no es un entorno, pero para que nos entendamos, ya que se utiliza desde Visual Studio).
Pues eso… aunque he leído por ahí que no es conveniente detectar si se está navegando en un dispositivo móvil… eso era porque lo hacía con código duro (hard-code) es decir, detectar según el valor devuelto por userAgent de window.navigator, que sí, que puede producir resultados no deseados… pero… si usas Request.Browser.IsMobileDevice la cosa cambia.
Y hacer esa comprobación es bien simple. ¿Dónde hacerla? En cualquier parte del código «script» de tu página ASP.NET (de .NET Framework), ya sea que estés usando Visual Basic o C# (o incluso otros lenguajes que soporten las páginas web asp.net de .net framework).
Un par de ejemplos, por favor
Esta es una página .aspx con código para C#:
<%@PageLanguage="C#"AutoEventWireup="true" %>
<scriptrunat="server">protectedvoid Page_Load(object sender, EventArgs e)
{
if (Request.Browser.IsMobileDevice)
{
LabelDesktop.Visible = false;
LabelMobile.Visible = true;
}
else
{
LabelDesktop.Visible = true;
LabelMobile.Visible = false;
}
}
</script><!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><bodystyle="font-family:Consolas"><formid="form1"runat="server"><div><asp:Labelrunat="server"ID="LabelMobile"Visible="false"Font-Size="xx-Large"Font-Bold="true"Text="Estas viendo esto en el navegador de un dispositivo móvil."/><asp:Labelrunat="server"ID="LabelDesktop"Visible="false"Font-Size="xx-Large"Font-Bold="true"Text="Estas viendo esto en el navegador de escritorio."/></div></form></body></html>
Esta es una página .aspx con código para Visual Basic:
<%@PageLanguage="VB"AutoEventWireup="true" %>
<scriptrunat="server">ProtectedSub Page_Load(sender AsObject, e AsEventArgs)
If Request.Browser.IsMobileDevice Then
LabelDesktop.Visible = False
LabelMobile.Visible = TrueElse
LabelDesktop.Visible = True
LabelMobile.Visible = FalseEndIfEndSub</script><!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><bodystyle="font-family:Consolas"><formid="form1"runat="server"><div><asp:Labelrunat="server"ID="LabelMobile"Visible="false"Font-Size="xx-Large"Font-Bold="true"Text="Estas viendo esto en el navegador de un dispositivo móvil."/><asp:Labelrunat="server"ID="LabelDesktop"Visible="false"Font-Size="xx-Large"Font-Bold="true"Text="Estas viendo esto en el navegador de escritorio."/></div></form></body></html>
Nota: Puedes tener las dos páginas en una misma aplicación o proyecto WEB de Visual Studio sin necesidad de hacer nada especial, solo tener las páginas en un sitio que acepte .NET Framework.
A tener en cuenta
Si muestras la páginas en un dispositivo móvil, es posible que el navegador te permita ver la página como «escritorio», en ese caso, el valor que devuelve es escritorio, no que es móvil. En las siguientes capturas tienes la demostración. En esas capturas estoy usando el Edge para Android en un Google Pixel 4a.
En la figura 1 estoy mostrando la página versión de Visual Basic en el móvil, que si quieres la puedes probar usando el enlace mostrado (está alojada en mi sitio: elguille.info/WebFormVB.aspx).
Figura 1.
En la figura 2 te muestro la versión para C# antes de cambiarla a modo escritorio. También puedes probarla usando este enlace en mi sitio: elguille.info/WebFormCS.aspx.
Figura 2. Mostrando la página como móvil y queriendo cambiar a versión para ordenador
Figura 3. Mostrando la página como si estuviese en escritorio y queriendo cambiar a versión apra sitio móvil.
Nota: También puedes probarlo en el navegador de escritorio usando las herramientas de desarrollador, que en Edge y Chrome se pueden acceder usando Ctrl+Shift+I. Y desde esas herramientas puedes indicar que se muestre como si fuese en un móvil (ver la figura 4).
Figura 4. Usando las herramientas de desarrollador puedes ver en el escritorio cómo sería usarlo en un móvil… o casi.
Pues eso… Si estás haciendo una aplicación con Xamarin.Forms para iOS (de Apple) y quieres probar el código en un emulador o un dispositivo conectado a tu equipo, debes tener en cuenta que si estás desarrollando con Visual Studio para Mac todo irá bien, pero si estás usando Visual Studio para Windows, simplemente no te funcionará… salvo que antes te funcionase… ahora te lo explico 😉
Aclaro esto último: Según me cuentan hay un problema con el provisioning (el que se indica en iOS Bundle Signing), es decir, autenticar tu cuenta de Apple Developer (*) con la aplicación, debido a que recientemente Apple ha realizado un cambio que provoca que se bloquee temporalmente las peticiones y se obtenga un error.
También según me cuentan: Es una issue con prioridad alta y están revisándolo.
Así que… esperemos que pronto esté solucionado.
Lo que comenté de salvo que antes te funcionase es porque (también según me cuentan): Si en el PC, previamente se ha utilizado Hot Restart con la cuenta, se tiene en caché lo necesario para evitar alguna petición y por ese motivo, te puede funcionar sin problemas.
Capturas de iOS Bundle Signing
Aquí te dejo un par de (o tres) capturas de la opción iOS Bundle Signing en las opciones del proyecto para iOS, tanto en Windows (que es donde da el error) como en un Mac (que no da error y funciona sin problemas).
Figura 1. La firma (autenticación) en Visual Studio para Mac funciona correctamente.
Figira 2. Fallo al autenticar con Visual Studio para Windows usando un dispositivo.
Figura 3. Fallo al autenticar con Visual Studio para Windows usando el emulador.
Y esto es todo, espero que te sea de utilidad.
Cuando esté solucionado intentaré poner una nota en este post de que así es… ¡espero no olvidarme! 😉
Nos vemos. Guillermo
(*) Para desarrollar (creo que incluso para probar) aplicaciones de Xamarin.Forms para iOS (Apple) debes tener creada una cuenta de Apple Developer, que a día de hoy cuesta 99€ al año. Esa cuenta se debe usar tanto en Windows como en Mac.
P.S. Título en inglés: Provisioning issues in iOS apps with Xamarin.Forms built with Visual Studio for Windows.