es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La solicitud de seguimiento de la aplicación de Uno Platform no aparece en IOS 15.

Estoy actualizando mi aplicación basada en Uno y en las pruebas, la solicitud de seguimiento de la aplicación ya no aparece. Había implementado esto y funcionaba correctamente en iOS 14. En iOS 14 podía ir a la configuración de privacidad y ver que el usuario había seleccionado si quería que se le hiciera seguimiento o no. No veo nada de esto en iOS 15. En mi investigación, parece que necesito anular el método onActivated en AppDelegate y poner el código de solicitud allí. No tengo una clase AppDelegate en mi proyecto, así que intenté agregar una en App.iOS, pero no pudo encontrar el FormsApplicationDelegate que tenía el ejemplo. Además, cuando miro en la configuración en iOS, no muestra la aplicación como si tuviera una elección de seguimiento/no seguimiento. Supongo que esto se mostrará una vez que obtenga la solicitud para mostrar. Verifiqué que la configuración esté en mi info.plist. ¿Cuál es la mejor manera de hacer esto?

Aquí está mi implementación actual:

info.plist:

<key>NSUserTrackingUsageDescription</key>
    <string>La aplicación desea acceder al identificador con fines analíticos</string>

MainPage.xaml.cs:

#if IOS
using AppTrackingTransparency;
#endif

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        #if IOS
        try
        {
            ATTrackingManager.RequestTrackingAuthorization((status) =>
            {
                if (status == ATTrackingManagerAuthorizationStatus.Authorized)
                {
                    // hacer algo
                }
                else if (status == ATTrackingManagerAuthorizationStatus.Denied)
                {
                    // hacer algo
                }
            });
        }
        catch (Exception e)
        {
            // hacer algo
        }
        #endif
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución para la falta de la notificación de seguimiento de aplicaciones en iOS 15

    Parece que en iOS 15, la notificación de seguimiento de aplicaciones ya no se activa automáticamente. Por lo tanto, debes anular el método DidBecomeActive de la clase AppDelegate y activar manualmente la notificación allí.

    Desafortunadamente, como no tienes una clase AppDelegate en tu proyecto, deberás crear una manualmente. Aquí tienes los pasos que puedes seguir:

    1. Crea un nuevo archivo .cs en tu proyecto app.iOS y llámalo AppDelegate.cs.
    2. En el archivo, agrega el siguiente código:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    using Foundation;
    using UIKit;
    using AppTrackingTransparency;
    
    namespace TuNombreDeApp.iOS
    {
        [Register("AppDelegate")]
        public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
        {
            public override bool FinishedLaunching(UIApplication app, NSDictionary options)
            {
                global::Xamarin.Forms.Forms.Init();
                LoadApplication(new App());
    
                return base.FinishedLaunching(app, options);
            }
    
            public override void DidBecomeActive(UIApplication application)
            {
                base.DidBecomeActive(application);
    
                RequestTrackingAuthorization();
            }
    
            private void RequestTrackingAuthorization()
            {
                if (UIDevice.CurrentDevice.CheckSystemVersion(14, 5))
                {
                    ATTrackingManager.RequestTrackingAuthorization((status) =>
                    {
                        switch (status)
                        {
                            case ATTrackingManagerAuthorizationStatus.Authorized:
                                // Manejar el caso de autorización
                                break;
                            case ATTrackingManagerAuthorizationStatus.Denied:
                                // Manejar el caso de denegación
                                break;
                            case ATTrackingManagerAuthorizationStatus.Restricted:
                                // Manejar el caso de restricción
                                break;
                            case ATTrackingManagerAuthorizationStatus.NotDetermined:
                                // Manejar el caso de no determinado
                                break;
                        }
                    });
                }
            }
        }
    }
    
    1. Reemplaza TuNombreDeApp con el nombre de tu aplicación en la declaración del espacio de nombres de arriba.
    2. En MainPage.xaml.cs, elimina la siguiente línea (si existe):
    using AppTrackingTransparency;
    
    1. Ahora puedes eliminar el bloque try-catch de MainPage.xaml.cs:
    try
    {
        ATTrackingManager.RequestTrackingAuthorization((status) => {
            if (status == ATTrackingManagerAuthorizationStatus.Authorized)
            {
                // hacer algo
            }
            else if (status == ATTrackingManagerAuthorizationStatus.Denied)
            {
                // hacer algo
            }
        });
    }
    catch (Exception e)
    {
        // hacer algo
    }
    
    1. Asegúrate de que la clave NSUserTrackingUsageDescription aún esté presente en tu archivo Info.plist, como ya has verificado.
    2. Compila y ejecuta tu aplicación en un dispositivo con iOS 15 o posterior.
    3. Ahora deberías ver la notificación de seguimiento de aplicaciones cuando la aplicación se active por primera vez después de la instalación. Nota: si el usuario ya ha tomado una decisión con respecto al seguimiento en el pasado, no verás la notificación nuevamente.

    ¡Espero que esto ayude!

Comments are closed.