bottom bar ios swift storekit

bar - iOS: cómo detectar si un usuario está suscrito a una suscripción auto-renovable



status bar ios (3)

Esperemos que el título sea autoexplicativo. Estoy tratando de hacer algo como esto:

checkIfUserIsSubscribedToProduct(productID, transactionID: "some-unique-transaction-string", completion: { error, status in if error == nil { if status == .Subscribed { // do something fun } } }

¿Existe algo parecido al código hipotético que he proporcionado? Siento que estoy tomando pastillas locas

Editar

En preguntas similares, sigo viendo una respuesta genérica de "oh, tienes que validar el recibo", pero no hay explicación sobre cómo, ni siquiera qué es un recibo. ¿Podría alguien proporcionarme cómo "validar el recibo"? Intenté este tutorial pero no parecía funcionar.

Editar - Para Bounty

Por favor, aborde la siguiente situación: un usuario se suscribe a mi suscripción auto-renovable y obtiene más contenido digital debido a eso: genial, implementado. Pero, ¿cómo verifico si esa suscripción sigue siendo válida (es decir, no cancelaron su suscripción) cada vez que abren la aplicación? ¿Cuál es la solución más simple para verificar esto? ¿Hay algo como el código hipotético que proporcioné en mi pregunta? Por favor, guíeme a través de esto y proporcione más detalles sobre el tema que pueda ser útil.


¿Qué estás tratando de lograr en particular? ¿Quieres verificar un ID de Apple específico?

Dudo mucho que esto sea posible a través del SDK. Refiriéndose a ¿Es posible obtener la ID de Apple del usuario a través del SDK? puede ver que ni siquiera puede solicitar la ID directamente, sino servicios que se le adjuntan.

Lo que funcionaría es almacenar en caché todas las transacciones en su propio servidor y buscar en su base de datos localmente, pero eso requeriría que la aplicación solicite el ID de Apple del usuario para que pueda actualizar el estado de suscripción cada vez que se inicie, ya que puede verificar el IAP del ID asociado con el dispositivo.

Sin embargo, el usuario podría simplemente escribir lo que quisiera, y es poco probable que obtenga esto a través del proceso de revisión de la aplicación de Apple.


Estoy usando MKSoreKit https://github.com/MugunthKumar/MKStoreKit para las suscripciones de renovación automática. Pero está en el objetivo c. Puede verificar el código de la biblioteca para la solución. Lo estoy usando en mi código y está funcionando bien.

utilizando el método a continuación puede comprobar fácilmente el estado de la suscripción

if([MKStoreManager isProductPurchased:productIdentifier]) { //unlock it }

Obtiene el ID de Apple del dispositivo y creo que es específico del usuario.


Sé que todo el mundo estaba muy preocupado por mí y cómo lo estaba haciendo al respecto; no temas, resuelve mi problema. El principal problema fue que probé la basura y el código obsoleto en este enlace , pero no funcionó, así que me di por vencido. Luego volví a eso y lo implementé con Alamofire y funciona muy bien. Aquí está la solución del código:

Swift 3:

let receiptURL = Bundle.main.appStoreReceiptURL let receipt = NSData(contentsOf: receiptURL!) let requestContents: [String: Any] = [ "receipt-data": receipt!.base64EncodedString(options: []), "password": "your iTunes Connect shared secret" ] let appleServer = receiptURL?.lastPathComponent == "sandboxReceipt" ? "sandbox" : "buy" let stringURL = "https:///(appleServer).itunes.apple.com/verifyReceipt" print("Loading user receipt: /(stringURL)...") Alamofire.request(stringURL, method: .post, parameters: requestContents, encoding: JSONEncoding.default) .responseJSON { response in if let value = response.result.value as? NSDictionary { print(value) } else { print("Receiving receipt from App Store failed: /(response.result)") } }