iOS In-App Purchase中涉及到的货币单位

现在iOS的AppStore上各类应用非常丰富,有付费的也有免费的,而免费的应用也可以支持IAP (In-App Purchase,应用内支付) 。 对于应用内支付,我们有时候希望对用户的支付行为进行记录,甚至通过记录支付过程进行记账,那在这个过程中用户支付所使用的货币类型是我们需要考虑的一个问题,这里我整理一下。

做过iOS发布的朋友应该都知道,我们在iTunes Connect上发布一款应用的时候会选择发布的国家/地区。这实际上也就是说我们在不同国家地区的AppStore上,可下载安装的应用是不同的,而且这与用户的Apple ID账号有关。

所以,本文的问题主要是针对多地区发布的,如果你的应用只在中国大陆发布,而不考虑港、澳、台及其他国家和地区,应用收费只需要关注人民币就可以了。

在iTunes Connect提交IAP商品信息时,我们定的价格只需要选择对应的Price Tier,苹果的AppStore会根据特定的货币单位转换成对应的值。

在应用客户端里,商品信息通过向AppStore发起SKProductsRequest获得。每一个商品的价格等由一个SKProduct对象来维护,其中有两个重要属性:

price,一个NSDecimalNumber类对象

priceLocale,一个NSLocale对象,表示地区信息,和price的数值对应;这里面包含的东西就多了,其中包括一个货币单位

一个商品,比如设置了Tier1,那么如果他在美国AppStore发布,即用户账号是在美国AppStore登录,则得到的price是0.99,单位是USD;而如果在中国大陆,则是6,单位CNY。关于货币单位,这其中有几种办法,可以通过localeIdentifier方法来获取,也可以通过key-value的方式获取到。

如果需要在付款时给用户提示,显示的字符串可以这样拼凑:

//就这里。

NSNumberFormatter*numberFormatter = [[NSNumberFormatteralloc] init];

[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];

[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

[numberFormatter setLocale:product.priceLocale];

NSString*formattedPrice = [numberFormatter stringFromNumber:product.price];//例如 ¥12.00

这也是苹果官方文档给出的示例代码。其中主要是使用了NSNumberFormatter类,behavior是和操作系统版本有关的参数,style则是显示NSDecimalNumber时的格式,除了CurrencyStyle这个常量还有百分号、科学计数法等风格,读者可以自己尝试,locale则决定了CurrencyStyle下的货币单位符号,而且仅仅是符号。注意一点,NSNumberFormatter不会根据单位和汇率给你做货币数值转换的工作,如果需要转成统一货币,那要自己根据实时汇率做转换计算喽。

除了货币单位,每个商品可以在iTunesConnect上配置本地化/国际化的名称和描述信息,这里就不多说了。

有关货币单位,可以参看苹果的支付协议文档或App Store Pricing Matrix,也可以参看ISO 4217上的内容:

ios支付 选择货币_iOS In-App Purchase中涉及到的货币单位相关推荐

  1. ios支付 选择货币_iOS开发中金钱货币的计算问题

    ios开发中涉及到和货币价格计算相关的,都需要注意计算精度的问题. 服务器有可能返回的金钱是int float double string NSNumber, 单纯的float.double的计算都会 ...

  2. iOS应用内购买(In App Purchase)总结

    先附上几篇文章: 1.In App Purchases: A Full Walkthrough 这篇文章里说的都很详尽了,代码什么的基本可以照搬. 2.Store Kit Guide(In App P ...

  3. ios和android区别是什么,app测试中ios和Android的区别:

    今天偶然看到一个面试题,安卓和ios的测试区别,一下子只能想到几个基础的点,后面百度了一下,答案简单记录一下. app测试中ios和Android的区别: 1.安卓手机针对每一款手机有不一样的操作:苹 ...

  4. iOS开发调试技巧之在App设置中切换服务器环境

    在日常的App开发中,会有正式服务器与测试服务器两种不同的环境,调试或测试时经常需要在不同的环境中切换. 在使用Xcode调试时,可能需要运行两次以测试不同的服务器环境,而在打包测试时,则需要导出两个 ...

  5. ios支付宝支付失败不回调_为什么 iOS 支付成功后能回到 APP ,但是没有回调?...

    接入 客户端从服务器端拿到 charge 对象后,调用下面的方法[Pingpp createPayment:charge viewController:viewController appURLSch ...

  6. ios wkweb设置图片_iOS WKWebView识别H5中的图片资源

    想获取H5的图片坐标那就需要JS注入了 - (void)handleSingleTap:(UITapGestureRecognizer *)recognizer { CGPoint touchPoin ...

  7. IOS应用程序发布到苹果APP STORE完整流程使用教程

    参考: http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) htt ...

  8. 下发布可执行文件_IOS APP 发布过程中涉及相关概念

    AppID(应用 ID) AppID 是识别不同应用程序的唯一标志符,每个 app 都需要一个 App ID 或者 app 标识.目前有两种类型的 App 标识:一个是精确的 App ID(expli ...

  9. IOS应用程序发布到苹果APP STORE

    参考: http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) htt ...

  10. AppStore苹果应用支付开发(In App Purchase)翻译

    http://yarin.blog.51cto.com/1130898/549141 一.In App Purchase概览 Store Kit代表App和App Store之间进行通信.程序将从Ap ...

最新文章

  1. 机器学习(2)特征提取1 -- 字典特征提取
  2. 前端/投资者能从阿里巴巴CACSC全球总决赛的项目路演中获得什么
  3. ML-2 机器学习算法
  4. JAVA中this用法小结
  5. sqoop从oracle导入hive分区,sqoop从oracle导入hive Hive exited with status 64
  6. 业务线开发流程图(四)
  7. java调用数据库的基本步骤_Java实现数据库操作的基本流程(转)
  8. Atitit 多继承实现解决方案 java c#
  9. wps android 安装包下载地址,WPS Office手机版下载安装_WPS Office下载软件安卓版13.0.1...
  10. GAN(生成对抗神经网络)生成MNIST 基于pytorch实现
  11. 文件关联修复命令ftype用法
  12. 【信源编码技术】实验1-浊音清音爆破音的时域及频域特性分析
  13. phpspreadsheet文件下载
  14. jmeter抓取百度热点链接
  15. Android 4.1.2微信版本,ttkefu在线客服系统
  16. 【TPAMI 2022】A Survey on Vision Transformer
  17. Python 多进程与数据库连接池配合同时取出数据进行处理
  18. R5 7640H参数 锐龙R57640H性能怎么样相当于什么水平级别
  19. win11 22H2 连接共享打印机失败
  20. rosetta stone fatal application error: #1141错误 (罗塞塔石碑1141) 解决方法

热门文章

  1. 华为云计算hcip证书有效期_华为云计算容器HCIP V1.0认证
  2. js 去除空格与换行
  3. 建立景区商城小程序,构建二次消费生态,增加景区收入
  4. 【饭谈】自动化有三宝:工资高,福利好,代码和人总有一个能跑
  5. 方方格子access_安装了这两款Office插件,我确信你的办公效率会大大提高!
  6. 人工智能python营_AI人工智能训练营
  7. C#二次开发金橙子MarkEzd.dll激光打标机
  8. java学习电子书_Java学习指南(第4版)(上册) 中文完整pdf扫描版[179MB]
  9. Java中通过js简单的调用高拍仪和扫描仪
  10. Linux下pgadmin4启动报错,如何在UBUNTU 16.04上安装桌面模式中的PGADMIN 4