| | |
| | | } |
| | | } |
| | | |
| | | func getIPAPrice(_ price:Int,clouse:@escaping (SKProduct)->Void){ |
| | | var ipaId = "" |
| | | switch price { |
| | | case 98: ipaId = "com.jkfitness.a.price.1" |
| | | case 298:ipaId = "com.jkfitness.a.price.2" |
| | | case 488:ipaId = "com.jkfitness.a.price.3" |
| | | case 698:ipaId = "com.jkfitness.a.price.4" |
| | | case 998:ipaId = "com.jkfitness.a.price.5" |
| | | default:break |
| | | } |
| | | |
| | | var productIds = Set<String>() |
| | | productIds.insert(ipaId) |
| | | |
| | | InPurchaseManager.instance().setProductList(productIds) {products in |
| | | if let product = products.first{ |
| | | clouse(product) |
| | | } |
| | | } |
| | | } |
| | | // func getIPAPrice(_ price:Int,clouse:@escaping (SKProduct)->Void){ |
| | | // var ipaId = "" |
| | | // switch price { |
| | | // case 98: ipaId = "com.jkfitness.a.price.1" |
| | | // case 298:ipaId = "com.jkfitness.a.price.2" |
| | | // case 488:ipaId = "com.jkfitness.a.price.3" |
| | | // case 698:ipaId = "com.jkfitness.a.price.4" |
| | | // case 998:ipaId = "com.jkfitness.a.price.5" |
| | | // default:break |
| | | // } |
| | | // |
| | | // var productIds = Set<String>() |
| | | // productIds.insert(ipaId) |
| | | // |
| | | // InPurchaseManager.instance().setProductList(productIds) {products in |
| | | // if let product = products.first{ |
| | | // clouse(product) |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | |
| | | func dismiss(){ |
| | |
| | | } |
| | | |
| | | //获取APP 首次安装时间 |
| | | func test1(){ |
| | | |
| | | let queue = DispatchQueue(label: "inapppurchasequeue") |
| | | queue.async { |
| | | let receiptURL = Bundle.main.appStoreReceiptURL |
| | | guard receiptURL?.path != nil else { return } |
| | | do { |
| | | let receiptData = try Data(contentsOf: receiptURL!, options: .alwaysMapped) |
| | | let base64EncodedReceipt = receiptData.base64EncodedString(options: []) |
| | | var verifyReceipt:String = AppleReceiptValidator.VerifyReceiptURLType.sandbox.rawValue |
| | | #if !DEBUG |
| | | verifyReceipt = AppleReceiptValidator.VerifyReceiptURLType.production.rawValue |
| | | #endif |
| | | let purchaseURL = URL(string: verifyReceipt)! |
| | | |
| | | var request = URLRequest(url: purchaseURL) |
| | | request.httpMethod = "POST" |
| | | request.setValue("application/json", forHTTPHeaderField: "Content-Type") |
| | | |
| | | let jsonBody: [String: Any] = [ |
| | | "receipt-data": base64EncodedReceipt, |
| | | "password": ShareAppleKey // 你的共享密钥 |
| | | ] |
| | | |
| | | let jsonData = try JSONSerialization.data(withJSONObject: jsonBody, options: []) |
| | | request.httpBody = jsonData |
| | | |
| | | let session = URLSession.shared |
| | | let task = session.dataTask(with: request) { (data, response, error) in |
| | | if let error = error {return} |
| | | guard let data = data else { return } |
| | | do { |
| | | if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { |
| | | print(json) |
| | | if let purchageModel = PurchaseModel.deserialize(from: json),purchageModel.status == 0{ |
| | | |
| | | } |
| | | } |
| | | } catch { |
| | | print("JSON processing failed: \(error)") |
| | | } |
| | | } |
| | | task.resume() |
| | | } catch { |
| | | print("Error reading receipt data: \(error)") |
| | | } |
| | | } |
| | | } |
| | | // func test1(){ |
| | | // |
| | | // let queue = DispatchQueue(label: "inapppurchasequeue") |
| | | // queue.async { |
| | | // let receiptURL = Bundle.main.appStoreReceiptURL |
| | | // guard receiptURL?.path != nil else { return } |
| | | // do { |
| | | // let receiptData = try Data(contentsOf: receiptURL!, options: .alwaysMapped) |
| | | // let base64EncodedReceipt = receiptData.base64EncodedString(options: []) |
| | | // var verifyReceipt:String = AppleReceiptValidator.VerifyReceiptURLType.sandbox.rawValue |
| | | //#if !DEBUG |
| | | // verifyReceipt = AppleReceiptValidator.VerifyReceiptURLType.production.rawValue |
| | | //#endif |
| | | // let purchaseURL = URL(string: verifyReceipt)! |
| | | // |
| | | // var request = URLRequest(url: purchaseURL) |
| | | // request.httpMethod = "POST" |
| | | // request.setValue("application/json", forHTTPHeaderField: "Content-Type") |
| | | // |
| | | // let jsonBody: [String: Any] = [ |
| | | // "receipt-data": base64EncodedReceipt, |
| | | // "password": ShareAppleKey // 你的共享密钥 |
| | | // ] |
| | | // |
| | | // let jsonData = try JSONSerialization.data(withJSONObject: jsonBody, options: []) |
| | | // request.httpBody = jsonData |
| | | // |
| | | // let session = URLSession.shared |
| | | // let task = session.dataTask(with: request) { (data, response, error) in |
| | | // if let error = error {return} |
| | | // guard let data = data else { return } |
| | | // do { |
| | | // if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] { |
| | | // print(json) |
| | | // if let purchageModel = PurchaseModel.deserialize(from: json),purchageModel.status == 0{ |
| | | // |
| | | // } |
| | | // } |
| | | // } catch { |
| | | // print("JSON processing failed: \(error)") |
| | | // } |
| | | // } |
| | | // task.resume() |
| | | // } catch { |
| | | // print("Error reading receipt data: \(error)") |
| | | // } |
| | | // } |
| | | // } |
| | | } |