Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 取消应用内购买自动续费的通知_Objective C_Ios_Cocoa Touch_In App Purchase - Fatal编程技术网

Objective c 取消应用内购买自动续费的通知

Objective c 取消应用内购买自动续费的通知,objective-c,ios,cocoa-touch,in-app-purchase,Objective C,Ios,Cocoa Touch,In App Purchase,我正在开发一款iPhone应用程序,我想为应用程序内的购买实现新的自动续费模式。我能够成功实现交易,甚至可以订阅应用程序,但如果用户取消自动续费订阅怎么办 我如何才能知道它已被取消,因此不再允许访问(一旦过期)?您可以通过向苹果服务器发送收据验证来查找用户订阅的过期日期。请查看屏幕上的图1-3 基本上,这些步骤是: 在设备上,获取应用内购买的交易凭证。您在事务期间保存的或通过调用[SKPaymentQueue restoreCompletedTransactions]保存的 将收据发送到您的服务

我正在开发一款iPhone应用程序,我想为应用程序内的购买实现新的自动续费模式。我能够成功实现交易,甚至可以订阅应用程序,但如果用户取消自动续费订阅怎么办


我如何才能知道它已被取消,因此不再允许访问(一旦过期)?

您可以通过向苹果服务器发送收据验证来查找用户订阅的过期日期。请查看屏幕上的图1-3

基本上,这些步骤是:

  • 在设备上,获取应用内购买的交易凭证。您在事务期间保存的或通过调用
    [SKPaymentQueue restoreCompletedTransactions]
    保存的
  • 将收据发送到您的服务器。(这比试图直接从应用程序对苹果服务器进行收据验证更可取,因为这需要你将共享机密存储在设备上。)
  • 将收据从您的服务器发送到苹果的服务器,并在响应中查找名为
    expires\u date
    (以1970年1月1日格林威治标准时间以来的毫秒表示)的密钥
  • 我使用此指南在服务器端帮助我:


    无法确定用户是否打开或关闭了自动续订。苹果不允许你访问这些信息。唯一的方法是等待过期日期过去而不进行续签。

    如果收据状态为
    21006
    ,并且有一个名为
    取消日期的键,那么它就是取消,您可以在该键中找到新的过期日期,但它是一个格式化日期,如果您需要更好的值来解析
    收据的检查['latest\u expired\u receipt\u info']['cancellation\u date\u ms']
    expires\u date

    相同,我没有收到收据['latest\u expired\u receipt\u info']。它还在继续吗?我没有收到任何提到的密钥。仅针对自动续费订阅的iOS 6样式交易收据返回()嘿,andrew,可以从iTunes account1订阅,然后将iTunes帐户更改为Account2,应用程序应继续使用新的iTunes帐户,即Account2。应用程序不应要求从iTunes帐户2购买。我该如何管理?我正在使用自动续订订阅。