Superman Blog

Thinking will not overcome fear but action will.

苹果内购(IAP)从入门到精通(6)- 实际业务结合&线上异常情况处理

苹果内购(IAP)从入门到精通(6)- 实际业务结合&线上异常情况处理

前言 在之前写的 苹果内购(IAP)从入门到精通(3)- 商品充值流程(非订阅型)中,已经简单介绍了整个消耗型商品(非订阅型的商品还有其他类型,但消耗型商品最常见)的充值流程。大致流程为: 添加监听(addTransactionObserver)-> 添加新的交易(addPayment)-> 付款 -> 成功返回Purchased状态(SKPaymentTransacti...

苹果内购(IAP)从入门到精通(5)- 掉单处理、防hook以及一些坑

苹果内购(IAP)从入门到精通(5)- 掉单处理、防hook以及一些坑

1. 结束交易-finishTransaction [SKPaymentQueue defaultQueue]这个队列里面存着所有的已支付,未支付的订单,而且需要通过finishTransaction手动移除完成了的订单。 一般情况下,我们都会在以下几种情况移除订单: a.支付失败。 比如手动取消支付、卡里没钱了等。即SKPaymentTransactionStateFail...

苹果内购(IAP)从入门到精通(4)- 订阅、续订、退订、恢复订阅

苹果内购(IAP)从入门到精通(4)- 订阅、续订、退订、恢复订阅

1. 充值流程(自动订阅) 1.1. 商品购买 等同于消耗型商品的购买。 无非也是添加支付队列监听,初始化SKPayment并添加到支付队列中,然后付款,回调Purchased状态。 在这里不再赘述。主要的区别是在后面。 1.2. 票据校验 请求苹果票据校验时,请求参数需要传一个新的参数,叫“共享秘钥”。这个在苹果后台配置商品ID的地方生成,如下所示: 自动订阅商品的票据,与...

苹果内购(IAP)从入门到精通(3)- 商品充值流程(非订阅型)

苹果内购(IAP)从入门到精通(3)- 商品充值流程(非订阅型)

以下为非订阅型的商品(包括最常用的消耗型,以及不怎么用到的非消耗型、非续期订阅商品)的充值流程。 1、 初始化IAP->获取商品->创建订单 1. 启动支付队列监听 继承协议,不用去设置delegate。然后去启动支付队列监听: [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; (可选)检...

苹果内购(IAP)从入门到精通(2)-银行卡与税务信息配置

苹果内购(IAP)从入门到精通(2)-银行卡与税务信息配置

简介说明 只要涉及AppStore上有付费功能的App,无论是内购(IAP)还是付费App购买,都需要设置银行卡和税务信息。银行卡信息需要真实有效的信息,相关开户行、地区必须匹配,否则在未来过审上线后,苹果无法将款项打到你的银行卡账上。 说明: 苹果会从开发者收入中抽成30%。从2021年1月开始(好像是?),苹果针对小型企业开发者,可以向苹果申请将抽成比例会降低到...

苹果内购(IAP)从入门到精通(1)-内购商品类型与配置

苹果内购(IAP)从入门到精通(1)-内购商品类型与配置

1.苹果后台配置 1.1. 配置商品 iOS APP只能上架App Store。苹果规定上架的App,要使用虚拟充值服务(注意是“虚拟充值”,类似于淘宝的实体付款不走内购但需要其他资质),只能使用苹果自己的支付方式(IAP内购)。如果你使用国内常用的支付宝、微信支付,苹果爸爸会在审核的时候拒绝你,并降低账号权重。如果你试图隐藏这些“第三方支付”方式,被苹果发现后,苹果甚至会直接封掉你的开...

Carthage 使用

Carthage

概念 什么是Carthage Carthage使用Swift语言编写,只支持动态框架,只支持 iOS8+的Cocoa依赖管理工具。 与现在流行的 CocoaPods 不同,Carthage编译你的依赖,并提供框架的二进制.framework文件,但你仍然保留对项目的结构和设置的完整控制,Carthage不会自动的修改你的项目文件或编译设置。是一个去中心化的Cocoa依赖管理工具。 优点 ...

RXSwift 如何选择操作符?

RXSwift 如何选择操作符?

1、我想要创建一个 Observable 产生特定的一个元素:just 创建 Observable 发出唯一的一个元素 just 操作符将某一个元素转换为 Observable。 演示 一个序列只有唯一的元素 0: let id = Observable.just(0) 它相当于: let id = Observable<Int>.create { ...

RXSwift

RXSwift

概念 ReactiveX(简写: Rx) 是一个可以帮助我们简化异步编程的框架。 RxSwift 是 Rx 的 Swift 版本。 它尝试将原有的一些概念移植到 iOS/macOS 平台。 你可以在这里找到跨平台文档 ReactiveX.io。 KVO,异步操作 和 流 全部被统一成抽象序列。这就是为什么 Rx 会如此简单,优雅和强大。 CocoaPods # Podfile ...

MQTT 附录B 强制性规范声明(非规范)

MQTT 附录B 强制性规范声明(非规范)

附录B 强制性规范声明(非规范) 目录 第一章 – 介绍 第二章 – MQTT控制报文格式 第三章 – MQTT控制报文 第四章 – 操作行为 第五章 – 安全 第六章 – 使用WebSocket 第七章 – 一致性目标 附录B – 强制性规范声明 这个附录是非规范的,只作为本文档正文中可以找到的大量一致性声明的摘要提供。一致性要求的限制列表见第七章...