Si necesitas desbloquear manualmente funciones premium para usuarios o grupos de usuarios específicos, puedes hacerlo mediante la API de Adapty. Esto resulta útil para campañas promocionales, acceso para inversores o casos especiales de soporte al cliente.
En esta guía aprenderás a identificar usuarios y concederles niveles de acceso de forma programática.
Casos de uso
Códigos promocionales: Cuando un usuario introduce un código promocional válido en tu app, concédele acceso automático a las funciones premium.
Acceso para inversores/beta testers: Proporciona acceso premium a inversores o beta testers comprobando sus atributos personalizados.
Paso 1. Identifica a los usuarios
Adapty usa customer_user_id para identificar a los usuarios en todas las plataformas y dispositivos. Esto es fundamental para garantizar que los usuarios conserven su acceso después de reinstalar la app o cambiar de dispositivo.
Solo necesitas crear este ID una vez. Cuando los usuarios se registran desde la app, puedes pasarles el customer user ID durante la activación del SDK, o usar el método identify si el SDK se activó antes del registro.
Si identificas nuevos usuarios después de la activación del SDK, el SDK primero creará un perfil anónimo (no puede funcionar sin uno). Cuando llames a identify con un customer user ID, se creará un nuevo perfil.
Este comportamiento es normal y no afectará la precisión de las métricas. Lee más aquí.
do { try await Adapty.identify("YOUR_USER_ID") // Unique for each user} catch { // handle the error}
// User IDs must be unique for each userAdapty.identify("YOUR_USER_ID") { error in if let error { // handle the error }}
Adapty.identify("YOUR_USER_ID") { error -> // Unique for each user if (error == null) { // successful identify }}
// User IDs must be unique for each userAdapty.identify("YOUR_USER_ID", error -> { if (error == null) { // successful identify }});
try { await adapty.identify("YOUR_USER_ID"); // Unique for each user // successfully identified} catch (error) { // handle the error}
try { await Adapty().identify(customerUserId); // Unique for each user} on AdaptyError catch (adaptyError) { // handle the error} catch (e) {}
Adapty.Identify("YOUR_USER_ID", (error) => { // Unique for each user if(error == null) { // successful identify }});
Adapty.identify("YOUR_USER_ID") // Unique for each user .onSuccess { // successful identify } .onError { error -> // handle the error }
Una vez que el usuario está identificado con un customer_user_id, puedes otorgarle niveles de acceso mediante la API del servidor. Esta llamada a la API concede el nivel de acceso al usuario para que pueda acceder a las funciones de pago sin necesidad de realizar un pago real.
Puedes controlar el acceso de los usuarios añadiendo un atributo personalizado (por ejemplo, Beta tester o Investor) en el Adapty Dashboard.
Cuando se inicie tu app, comprueba este atributo en el perfil del usuario para conceder acceso automáticamente.
Para actualizar el acceso, simplemente cambia el atributo en el dashboard.
Tras conceder el acceso mediante la API, el perfil del usuario se actualizará automáticamente. Obtén su perfil para comprobar el estado de su suscripción y desbloquear las funciones premium.
do { let profile = try await Adapty.getProfile() if profile.accessLevels["YOUR_ACCESS_LEVEL_ID"]?.isActive ?? false { // grant access to premium features }} catch {// handle the error}
Adapty.getProfile { result in if let profile = try? result.get() { // check the access if profile.accessLevels["YOUR_ACCESS_LEVEL_ID"]?.isActive ?? false { // grant access to premium features } }}
Adapty.getProfile { result -> when (result) { is AdaptyResult.Success -> { val profile = result.value // check the access if (profile.accessLevels["YOUR_ACCESS_LEVEL_ID"]?.isActive == true) { // grant access to premium features } } is AdaptyResult.Error -> { val error = result.error // handle the error } }}
Adapty.getProfile(result -> { if (result instanceof AdaptyResult.Success) { AdaptyProfile profile = ((AdaptyResult.Success<AdaptyProfile>) result).getValue(); // check the access if (profile.getAccessLevels().get("YOUR_ACCESS_LEVEL_ID") != null && profile.getAccessLevels().get("YOUR_ACCESS_LEVEL_ID").getIsActive()) { // grant access to premium features } } else if (result instanceof AdaptyResult.Error) { AdaptyError error = ((AdaptyResult.Error) result).getError(); // handle the error }});
try { const profile = await adapty.getProfile(); // check the access if (profile.accessLevels["YOUR_ACCESS_LEVEL_ID"]?.isActive) { // grant access to premium features }} catch (error) { // handle the error}
try { final profile = await Adapty().getProfile(); // check the access if (profile.accessLevels["YOUR_ACCESS_LEVEL_ID"]?.isActive ?? false) { // grant access to premium features }} on AdaptyError catch (adaptyError) { // handle the error} catch (e) {}
Adapty.GetProfile((profile, error) => { if (error != null) { // handle the error return; } // check the access if (profile.AccessLevels["YOUR_ACCESS_LEVEL_ID"]?.IsActive ?? false) { // grant access to premium features }});
Adapty.getProfile() .onSuccess { profile -> // check the access if (profile.accessLevels["YOUR_ACCESS_LEVEL_ID"]?.isActive == true) { // grant access to premium features } } .onError { error -> // handle the error }
try { const profile = await adapty.getProfile(); // check the access if (profile.accessLevels["YOUR_ACCESS_LEVEL_ID"]?.isActive) { // grant access to premium features }} catch (error) { // handle the error}