¿Qué es StoreKit y para qué sirve?
\n\nStoreKit es un framework integrado de Apple, diseñado para implementar Compras dentro de la aplicación (In-App Purchases) y suscripciones en aplicaciones para iOS, macOS, watchOS y tvOS. Proporciona a los desarrolladores una interfaz unificada para interactuar con la App Store: solicitar productos, procesar transacciones, verificar derechos de acceso y gestionar suscripciones.
\n\nLas principales tareas que resuelve StoreKit son:
\n- \n
- Monetización — venta de bienes digitales (acceso premium, moneda virtual, contenido). \n
- Gestión de suscripciones — renovaciones automáticas, estados, períodos de prueba. \n
- Seguridad — procesamiento de pagos a través de la App Store sin transferir datos de tarjetas bancarias al desarrollador. \n
- Restauración de compras — el usuario puede transferir compras a otro dispositivo. \n
Es importante entender: StoreKit no es una biblioteca de terceros, sino parte del SDK de Xcode. No es necesario instalarlo por separado, pero se debe configurar en App Store Connect y agregarlo al proyecto.
\n\nInstalación y configuración
\n\nDado que StoreKit es un framework del sistema, su instalación se reduce a conectarlo en el proyecto de Xcode:
\n\n- \n
- Abra su proyecto en Xcode. \n
- Seleccione el target (su aplicación) → pestaña "General". \n
- Desplácese hasta la sección "Frameworks, Libraries, and Embedded Content". \n
- Presione "+" y seleccione StoreKit.framework. \n
- Asegúrese de que el estado "Embed" esté configurado como "Do Not Embed". \n
Después de esto, importe el framework en los archivos necesarios:
\n\nimport StoreKit\n\nTambién es obligatorio configurar los productos en App Store Connect:
\n- \n
- Cree identificadores de productos (por ejemplo,
com.example.premium). \n - Indique el precio, la localización, el tipo (consumible/no consumible/suscripción). \n
- Para suscripciones, configure grupos y períodos de prueba. \n
Inicio rápido con ejemplo de código
\n\nEjemplo mínimo funcional para solicitar y comprar un producto:
\n\nimport StoreKit\n\nclass StoreManager: NSObject, SKProductsRequestDelegate, SKPaymentTransactionObserver {\n \n static let shared = StoreManager()\n private var products: [SKProduct] = []\n \n override private init() {\n super.init()\n SKPaymentQueue.default().add(self)\n }\n \n // 1. Solicitud de productos\n func fetchProducts(productIDs: Set<String>) {\n let request = SKProductsRequest(productIdentifiers: productIDs)\n request.delegate = self\n request.start()\n }\n \n // 2. Delegado de recepción de productos\n func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {\n self.products = response.products\n for product in products {\n print("Producto encontrado: \\(product.localizedTitle) — \\(product.price)")\n }\n }\n \n // 3. Compra\n func purchase(product: SKProduct) {\n let payment = SKPayment(product: product)\n SKPaymentQueue.default().add(payment)\n }\n \n // 4. Procesamiento de transacciones\n func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {\n for transaction in transactions {\n switch transaction.transactionState {\n case .purchased:\n // Desbloquear contenido\n print("Compra exitosa: \\(transaction.payment.productIdentifier)")\n SKPaymentQueue.default().finishTransaction(transaction)\n case .failed:\n if let error = transaction.error {\n print("Error de compra: \\(error.localizedDescription)")\n }\n SKPaymentQueue.default().finishTransaction(transaction)\n case .restored:\n print("Comp También en la biblioteca
Bcrypt en JavaScript (Node.js): guía completa con ejemplos
Cliente Redis para Node.js: ioredis — una potente herramienta para trabajar con Redis
Monitoreo de aplicaciones Rust con la biblioteca tracing