¿Cómo se agrega una compra en la aplicación a una aplicación de iOS? ¿Cuáles son todos los detalles y hay algún código de muestra?
Esto está destinado a ser un tipo general de cómo agregar compras en la aplicación a las aplicaciones de iOS
ios
objective-c
swift
cocoa-touch
in-app-purchase
Jojodmo
fuente
fuente
Respuestas:
Usuarios rápidos
Los usuarios de Swift pueden consultar Mi respuesta rápida para esta pregunta .
O echa un vistazo a la respuesta de Yedidya Reiss , que traduce este código de Objective-C a Swift.
Usuarios de Objective-C
El resto de esta respuesta está escrita en Objective-C
App Store Connect
My Apps
clic y luego haga clic en la aplicación que desea agregar la compra aFeatures
encabezado y luego seleccioneIn-App Purchases
a la izquierda+
ícono en el medionon-consumable
. Si fuera a enviar un artículo físico al usuario o le diera algo que pueda comprar más de una vez, usted elegiríaconsumable
.tld.websitename.appname.referencename
esto funcionará mejor, por ejemplo, podría usarcom.jojodmo.blix.removeads
cleared for sale
y luego elija el nivel de precio como 1 (99 ¢). El nivel 2 sería de $ 1.99, y el nivel 3 sería de $ 2.99. La lista completa está disponible si hace clic enview pricing matrix
Recomiendo usar el nivel 1, ya que generalmente es lo máximo que alguien pagará para eliminar anuncios.add language
botón azul e ingrese la información. Todo esto se mostrará al cliente, así que no ponga nada que no quiera que vean.hosting content with Apple
elegir noscreenshot for review
FOR NOW , todo lo que omitamos volveremos.La identificación de su producto puede demorar algunas horas en registrarse
App Store Connect
, así que tenga paciencia.Configurando su proyecto
Ahora que ha configurado su información de compra en la aplicación en App Store Connect, vaya a su proyecto Xcode y vaya al administrador de la aplicación (icono en forma de página azul en la parte superior de donde están sus métodos y archivos de encabezado) haga clic en su aplicación bajo objetivos (debería ser la primera) y luego vaya a general. En la parte inferior, debería ver
linked frameworks and libraries
hacer clic en el pequeño símbolo más y agregar el marco.StoreKit.framework
Si no hace esto, ¡la compra en la aplicación NO funcionará!Si está utilizando Objective-C como lenguaje para su aplicación, debe omitir estos cinco pasos . De lo contrario, si está utilizando Swift, puede seguir My Swift Answer para esta pregunta, aquí , o, si prefiere utilizar Objective-C para el código de compra en la aplicación pero está utilizando Swift en su aplicación, puede hacer lo siguiente :
Crear un nuevo
.h
archivo (cabecera) al ir aFile
>New
>File...
( Command ⌘+ N). Este archivo se denominará "Su.h
archivo" en el resto del tutorial.Cuando se le solicite, haga clic en Crear encabezado de puente . Este será nuestro archivo de encabezado de puente. Si no se pide, vaya al paso 3. Si se le pide, omita el paso 3 y vaya directamente al paso 4.
Cree otro
.h
archivo con el nombreBridge.h
en la carpeta principal del proyecto, luego vaya al Administrador de aplicaciones (el icono azul parecido a una página), luego seleccione su aplicación en laTargets
sección y haga clicBuild Settings
. Busque la opción que dice Swift Compiler - Generación de código , y luego configure la opción Encabezado de puente de Objective-C enBridge.h
En su archivo de encabezado de puente, agregue la línea
#import "MyObjectiveCHeaderFile.h"
, dondeMyObjectiveCHeaderFile
está el nombre del archivo de encabezado que creó en el paso uno. Entonces, por ejemplo, si nombró su archivo de encabezado InAppPurchase.h , agregaría la línea#import "InAppPurchase.h"
a su archivo de encabezado de puente.Crear un nuevo Objective-C Métodos (
.m
archivo) al ir aFile
>New
>File...
( Command ⌘+ N). Póngale el mismo nombre que el archivo de encabezado que creó en el paso 1. Por ejemplo, si llamó al archivo en el paso 1 InAppPurchase.h , llamaría a este nuevo archivo InAppPurchase.m . Este archivo se denominará "Su.m
archivo" en el resto del tutorial.Codificación
Ahora vamos a entrar en la codificación real. Agregue el siguiente código en su
.h
archivo:A continuación, debe importar el
StoreKit
marco en su.m
archivo, así como agregarSKProductsRequestDelegate
ySKPaymentTransactionObserver
después de su@interface
declaración:y ahora agregue lo siguiente en su
.m
archivo, esta parte se complica, por lo que le sugiero que lea los comentarios en el código:Ahora desea agregar su código para lo que sucederá cuando el usuario finalice la transacción, para este tutorial, usamos la eliminación de adiciones, tendrá que agregar su propio código para lo que sucede cuando se carga la vista de banner.
Si no tiene anuncios en su aplicación, puede usar cualquier otra cosa que desee. Por ejemplo, podríamos hacer que el color del fondo sea azul. Para hacer esto nos gustaría usar:
Ahora, en algún lugar de su
viewDidLoad
método, querrá agregar el siguiente código:Ahora que ha agregado todo el código, vaya a su archivo
.xib
ostoryboard
, y agregue dos botones, uno que dice comprar y el otro que dice restaurar. Conecte eltapsRemoveAds
IBAction
botón de compra que acaba de hacer y elrestore
IBAction
botón de restauración. Larestore
acción verificará si el usuario ha comprado previamente la compra en la aplicación, y le dará la compra en la aplicación de forma gratuita si aún no la tiene.Enviar para revisión
A continuación, vaya a App Store Connect y haga clic,
Users and Access
luego haga clic en elSandbox Testers
encabezado y luego haga clic en el+
símbolo de la izquierda donde diceTesters
. Puede poner cosas al azar para el nombre y apellido, y el correo electrónico no tiene que ser real, solo debe poder recordarlo. Ingrese una contraseña (que deberá recordar) y complete el resto de la información. Le recomendaría que establezcaDate of Birth
una fecha que haga que el usuario tenga 18 años o más.App Store Territory
Tiene que estar en el país correcto. A continuación, cierre sesión en su cuenta de iTunes existente (puede volver a iniciar sesión después de este tutorial).Ahora, ejecute su aplicación en su dispositivo iOS, si intenta ejecutarla en el simulador, la compra siempre será un error, DEBE ejecutarla en su dispositivo iOS. Una vez que la aplicación se esté ejecutando, toque el botón de compra. Cuando se le solicite que inicie sesión en su cuenta de iTunes, inicie sesión como el usuario de prueba que acabamos de crear. A continuación, cuando le pida que confirme la compra de 99 ¢ o lo que sea que establezca también en el nivel de precio, TOME UNA PANTALLA INSTANTÁNEA. Esto es lo que va a utilizar para su
screenshot for review
App Store Connect. Ahora cancele el pago.Ahora, ir a la tienda de aplicaciones Conectar , y luego ir a
My Apps
>the app you have the In-app purchase on
>In-App Purchases
. Luego haga clic en su compra en la aplicación y haga clic en editar debajo de los detalles de compra en la aplicación. Una vez que haya hecho eso, importe la foto que acaba de tomar en su iPhone a su computadora y cárguela como captura de pantalla para su revisión, luego, en las notas de revisión, coloque su correo electrónico y contraseña del USUARIO DE LA PRUEBA . Esto ayudará a Apple en el proceso de revisión.Después de haber hecho esto, regrese a la aplicación en su dispositivo iOS, aún conectado como la cuenta de usuario de prueba, y haga clic en el botón de compra. Esta vez, confirme el pago No se preocupe, esto NO le cobrará a su cuenta NINGÚN dinero, pruebe que las cuentas de usuario obtengan todas las compras en la aplicación de forma gratuita Después de haber confirmado el pago, asegúrese de lo que sucede cuando el usuario compra su producto realmente sucede Si no es así, eso será un error con su
doRemoveAds
método. Nuevamente, recomiendo usar cambiar el fondo a azul para probar la compra en la aplicación, sin embargo, esta no debería ser su compra real en la aplicación. ¡Si todo funciona y listo! ¡Solo asegúrese de incluir la compra en la aplicación en su nuevo binario cuando la cargue en App Store Connect!Aquí hay algunos errores comunes:
Registrado:
No Products Available
Esto podría significar cuatro cosas:
kRemoveAdsProductIdentifier
en el código anteriorSi no funciona la primera vez, ¡no te frustres! ¡No te rindas! ¡Me tomó cerca de 5 horas seguidas antes de poder hacer que esto funcionara, y alrededor de 10 horas buscando el código correcto! Si usa el código anterior exactamente, debería funcionar bien. Siéntase libre de comentar si tiene alguna pregunta en absoluto .
Espero que esto ayude a todos aquellos que esperan agregar una compra en la aplicación a su aplicación iOS. ¡Salud!
fuente
Simplemente traduzca el código de Jojodmo a Swift:
fuente
Respuesta rápida
Esto está destinado a complementar mi respuesta de Objective-C para los usuarios de Swift, para evitar que la respuesta de Objective-C sea demasiado grande.
Preparar
Primero, configure la compra en la aplicación en appstoreconnect.apple.com . Siga la parte inicial de mi respuesta de Objective-C (pasos 1-13, debajo del encabezado App Store Connect ) para obtener instrucciones sobre cómo hacerlo.
La identificación de su producto puede demorar algunas horas en registrarse en App Store Connect, así que sea paciente.
Ahora que ha configurado su información de compra en la aplicación en App Store Connect, necesitamos agregar el marco de Apple para compras
StoreKit
en la aplicación, a la aplicación.Ingrese a su proyecto Xcode y vaya al administrador de la aplicación (icono azul parecido a una página en la parte superior de la barra izquierda donde están los archivos de su aplicación). Haga clic en su aplicación debajo de los objetivos a la izquierda (debería ser la primera opción), luego vaya a "Capacidades" en la parte superior. En la lista, debería ver una opción "Compra en la aplicación". Active esta capacidad y Xcode se agregará
StoreKit
a su proyecto.Codificación
¡Ahora vamos a comenzar a codificar!
Primero, cree un nuevo archivo rápido que gestionará todas sus compras en la aplicación. Voy a llamarlo
IAPManager.swift
.En este archivo, vamos a crear una nueva clase, llamada
IAPManager
eso es unaSKProductsRequestDelegate
ySKPaymentTransactionObserver
. En la parte superior, asegúrese de importarFoundation
yStoreKit
A continuación, agregaremos una variable para definir el identificador de nuestra compra en la aplicación (también puede usar una
enum
, que sería más fácil de mantener si tiene múltiples IAP).A continuación, agreguemos un inicializador para nuestra clase:
Ahora, vamos a agregar las funciones requeridas para
SKProductsRequestDelegate
ySKPaymentTransactionObserver
para trabajar:Añadiremos la
RemoveAdsManager
clase más tardeAhora agreguemos algunas funciones que pueden usarse para comenzar una compra o restaurar compras:
A continuación, agreguemos una nueva clase de utilidades para administrar nuestros IAP. Todo este código podría estar en una clase, pero tenerlo múltiple lo hace un poco más limpio. Voy a hacer una nueva clase llamada
RemoveAdsManager
, y en ella, poner algunas funcionesLas tres primeras funciones,
removeAds
,restoreRemoveAds
yareAdsRemoved
, son funciones que se van a llamar para hacer ciertas acciones. Los últimos cuatro son uno que será llamado porIAPManager
.Agreguemos código a las dos primeras funciones
removeAds
yrestoreRemoveAds
:Y, por último, agreguemos algo de código a las últimas cinco funciones.
Poniendo todo junto, obtenemos algo como esto:
Por último, debe agregar alguna forma para que el usuario comience la compra y llame
RemoveAdsManager.removeAds()
y comience una restauración y llamadaRemoveAdsManager.restoreRemoveAds()
, ¡como un botón en alguna parte! Tenga en cuenta que, según las pautas de la tienda de aplicaciones, debe proporcionar un botón para restaurar las compras en algún lugar.Enviar para revisión
¡Lo último que debe hacer es enviar su IAP para su revisión en App Store Connect! Para obtener instrucciones detalladas sobre cómo hacerlo, puede seguir la última parte de mi respuesta de Objective-C , debajo del encabezado Enviar para revisión .
fuente
RMStore es una biblioteca liviana de iOS para compras en la aplicación. Envuelve la API de StoreKit y le proporciona bloques útiles para solicitudes asincrónicas. Comprar un producto es tan fácil como llamar a un solo método.
Para los usuarios avanzados, esta biblioteca también proporciona verificación de recibos, descargas de contenido y persistencia de transacciones.
fuente
Sé que llego bastante tarde para publicar esto, pero comparto una experiencia similar cuando aprendí las cuerdas del modelo IAP.
La compra en la aplicación es uno de los flujos de trabajo más completos en iOS implementado por el marco de Storekit. La documentación completa es bastante clara si tiene paciencia para leerla, pero es algo avanzada en cuanto a tecnicidad.
Para resumir:
1 - Solicite los productos: use las clases SKProductRequest y SKProductRequestDelegate para emitir una solicitud de ID de producto y recibirlos en su propia tienda itunesconnect.
Estos SKProducts deben usarse para completar la interfaz de usuario de su tienda que el usuario puede usar para comprar un producto específico.
2 - Emitir solicitud de pago: use SKPayment & SKPaymentQueue para agregar el pago a la cola de transacciones.
3 - Monitoree la cola de transacciones para la actualización del estado - use el método updatedTransactions del Protocolo SKPaymentTransactionObserver para monitorear el estado:
4: restablezca el flujo del botón: utilice el método restoreCompletedTransactions de SKPaymentQueue para lograr esto; el paso 3 se encargará del resto, junto con los siguientes métodos de SKPaymentTransactionObserver:
Aquí hay un tutorial paso a paso (escrito por mí como resultado de mis propios intentos de entenderlo) que lo explica. Al final, también proporciona una muestra de código que puede usar directamente.
Aquí hay otro que creé para explicar ciertas cosas que solo el texto podría describir de una mejor manera.
fuente