Tag: in app purchase

如何在购买后立即启动新视图,以及如何在App Launch中将此视图变为新视图?

我想添加一个应用程序内购买,使用户能够解锁一些隐藏的内容。 一旦购买,我需要用户自动redirect到一个新的视图。 而且,这个新的观点将成为App推出的主要观点。 我使用MKStoreKit,新的testing用户现在可以成功进行应用内购买。 购买此产品时,用户必须退出应用程序并重新启动以在启动时访问新的视图。 但是,如果我删除应用程序并通过Xcode重新安装它,应用程序似乎忘记了应用程序内购买,并在启动时用户redirect到旧的视图。 这是我在AppDelegate.m中添加的内容: – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [MKStoreManager sharedManager]; if([MKStoreManager isFeaturePurchased:@"com.company.featuretounlock"]) { [self.window addSubview:_newWelcomeView.view]; } else {[self.window addSubview:_viewController.view]; } [self.window makeKeyAndVisible]; return YES; } 当testing用户第一次进行购买时,这是一个窍门。 但是,如果应用程序被删除并重新安装,则会出现旧的视图。 如果用户试图再次购买,他被告知已经购买了,他被告知点击“确定”下载。 之后,如果用户退出应用程序并重新启动它,它仍然是旧的视图出现。 如何在购买后自动将用户redirect到新的View? 你可以在这里下载我的代码示例

如何使用NSUserDefaults而不是我自己的服务器在应用程序购买中添加易耗品?

我是新的,所以我需要简单的答案,如果可能的话。 我有我的第一个应用程序刚刚完成(但它甚至没有提交到商店),我想添加在应用程序购买。 我的应用程序是一个游戏,用户从虚拟货币“硬币”开始。 我想为他们添加一个IAP,以便能够在三到五个不同的价位上购买更多的硬币。 我看过很多教程,看起来信息混杂。 任何人都可以帮助我如何在这里继续下去,对于一个非常新的开发人员来说,这是一个现实的方式,并与我的具体情况相关。 我想免费添加IAP,但是如果有一个简单的付费解决scheme是非常值得的,那可能没关系。 我正在使用Xcode 4.3.2。 我想使用NSUserDefaults而不是我自己的服务器,我有NSUserDefaults的代码。 至less它存储了“硬币”,并具有价值的关键。 另外现在IOS 6已经不同了,我需要一个全新的Xcode版本吗? 感谢您的帮助,请原谅我在编写好问题方面的经验不足:)

可以纯粹在设备上的应用程序内购买收据validation与iOS6完成吗?

我一直在努力validation我想在iOS6和iOS7上运行的应用程序中的应用程序内购买收据。 我到目前为止的计划是:(a)首先在没有连接到Apple服务器的情况下(如在这些Apple文档中和WWDC 2013会话“使用收据保护您的数字销售”中所述)纯粹进行设备上的收据validation,然后(b)在我的服务器上进行验收。 这样做两次应该会有所帮助,而在我的服务器closures的情况下,也会使事情变得更加安全。 我终于收到一个从App Store回来的示例收据,并且在设备收据validation方面遇到了问题。 我正在iOS6系统(iPad)上testing,并使用SKPaymentTransaction中的transactionReceipt(而不是NSBundle中的appStoreReceiptURL)获取收据。 这是我有的样品收据: { "signature" = "AkkgbJWkOGHyXoigel4s39Ut37kiYv+sXwhTa6+ic6LJPOq3DLV3B2zi9aebiezw6nvbJKyFrIYh1mqiKHDp/gJ5RFrslWDxk7ntiKIs1eJ3bpFgDC733Au9f1zUctvAiFwN+9L/FOGWugddwnHMhh9N8eSPoK+BoYUX8ObeCxc7AAADVzCCA1MwggI7oAMCAQICCGUUkU3ZWAS1MA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEzMDEGA1UEAwwqQXBwbGUgaVR1bmVzIFN0b3JlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA5MDYxNTIyMDU1NloXDTE0MDYxNDIyMDU1NlowZDEjMCEGA1UEAwwaUHVyY2hhc2VSZWNlaXB0Q2VydGlmaWNhdGUxGzAZBgNVBAsMEkFwcGxlIGlUdW5lcyBTdG9yZTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMrRjF2ct4IrSdiTChaI0g8pwv/cmHs8p/RwV/rt/91XKVhNl4XIBimKjQQNfgHsDs6yju++DrKJE7uKsphMddKYfFE5rGXsAdBEjBwRIxexTevx3HLEFGAt1moKx509dhxtiIdDgJv2YaVs49B0uJvNdy6SMqNNLHsDLzDS9oZHAgMBAAGjcjBwMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUNh3o4p2C0gEYtTJrDtdDC5FYQzowDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBSpg4PyGUjFPhJXCBTMzaN+mV8k9TAQBgoqhkiG92NkBgUBBAIFADANBgkqhkiG9w0BAQUFAAOCAQEAEaSbPjtmN4C/IB3QEpK32RxacCDXdVXAeVReS5FaZxc+t88pQP93BiAxvdW/3eTSMGY5FbeAYL3etqP5gm8wrFojX0ikyVRStQ+/AQ0KEjtqB07kLs9QUe8czR8UGfdM1EumV/UgvDd4NwNYxLQMg4WTQfgkQQVy8GXZwVHgbE/UC6Y7053pGXBk51NPM3woxhd3gSRLvXj+loHsStcTEqe9pBDpmG5+sk4tw+GK3GMeEN5/+e1QT9np/Kl1nj+aBw7C0xsy0bFnaAd1cSS6xdory/CUvM6gtKsmnOOdqTesbp0bs8sn6Wqs0C9dgcxRHuOMZ2tm8npLUm7argOSzQ=="; "purchase-info" = "ewoJIm=="; "environment" = "Sandbox"; "pod" = "100"; "signing-status" = "0"; } 在我的设备收据validation中,我无法转换为PKCS#7表示forms: // Without (void *) coercion, we get a warning, but we're only reading from this buffer in BIO_new_mem_buf b_receipt = BIO_new_mem_buf((void *) [self.receipt bytes], [self.receipt length]); if (! b_receipt) […]

应用内购买错误代码0

我正在尝试排查错误代码为0的“无法连接到iTunes Store”的原因。 我知道我的应用程序标识符是好的,因为我检索应用程序启动时的产品信息并logging结果,并从iTunes获得正确的产品标识符和价格。 当我改变我的应用程序标识符到一些愚蠢的,这失败了。 我知道我的产品标识符也很好,因为上述原因(否则不起作用,我再次检查)。 我试图用两种不同的方式创build一个SKPayment: 第一种方式 SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier]; // This is deprecated in ios 5 but should work [[SKPaymentQueue defaultQueue] addPayment:payment]; 第二种方法 SKPayment *payment = [SKPayment paymentWithProduct:foundProduct]; [[SKPaymentQueue defaultQueue] addPayment:payment]; (foundProduct来自从SKProductsRequest返回的SKProducts的数组) 这两种方式失败,错误代码为0。 我已经在运行iOS 5.0.1的iPhone 4S和iOS 5的模拟器上尝试了这一点。 我读过硬复位工作( 2359739 )这似乎是疯了,但我继续尝试在模拟器(iOS模拟器=>重置内容和设置…)无济于事。 唯一我能想到的是,也许iTunes沙盒服务器是不可靠的…

MKStoreKit -isSubscriptionActive总是返回False

我正在使用MKStoreKit自动更新订阅。 在button的TouchUpInside方法我使用下面的代码.. if([[MKStoreManager sharedManager] isSubscriptionActive:kSubscriptionMonthlyIdentifier]){ //access to subscription feature }else{ //ask user to buy } 它总是让我失望。 并要求用户购买。 当我试图再次购买它显示我, You are already subscribed 。 有什么我做错了吗? 有没有其他方法来检查订阅是否有效。 我应该如何知道续订? 任何帮助,将不胜感激。 提前致谢。

如何在PHP中检查Apple AppReceipt服务器端的UID散列?

我问这个问题,以共享解决scheme的代码。 上下文:苹果在iOS 7中引入了AppReceipt。它也适用于OS X IAP。 这个收据是一个PKCS#7容器(asn.1),其有效负载也是asn.1结构化的。 Apple的文档指导如何控制设备收据的有效性,并parsing它以检查是否已经为当前设备发出。 还有联系Ap​​ple服务器通过应用程序服务器validation收据的说明。 不过,在后一种情况下,苹果公司返回的json数据不包含识别原始设备的信息。 之前的带有transactionReceipt的IAP协议模型在json中包含了identifierForVendor UID。 问题:如何使用PHPparsing服务器上的二进制收据以检查UID散列,以确保此收据属于此设备? 这可以在将收据发送到Apple服务器之前或之后完成。

MKStoreKit自动更新订阅

我正在使用MKStoreKit来处理自动更新订阅。 我目前正在testing1个月的订阅(testing订阅持续5分钟)。 我购买订阅后,我等待它过期。 一旦到期,我检查订阅是否仍然有效。 [[MKStoreManager sharedManager] isSubscriptionActive:kSubscriptionMonthlyIdentifier] 这将返回假像我所期望的。 但是,因为它是自动更新的,所以我期望MKStoreKit在这一点上联系Apple重新validation订阅。 也许我正在使用MKStoreKit错误,但根据文档和博客文章,它应该是如此简单: //App Delegate [MKStoreManager sharedManager]; //lets me know when the subscription was purchased [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(subscriptionPurchased:) name:kSubscriptionsPurchasedNotification object:nil]; //lets me know when the subscription expires [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(subscriptionFailed:) name:kSubscriptionsInvalidNotification object:nil]; //In a view with subscription feature if([[MKStoreManager sharedManager] isSubscriptionActive:kSubscriptionMonthlyIdentifier]){ //access to subscription feature } […]

In App Purchase的产品ID是否必须以反向DNS开头?

In App Purchase的产品ID是否必须以像com.mycompany.My_Awesome_Game.Level_Pack_1这样的反向DNS开头,还是可以像Level_Pack_1一样独立Level_Pack_1 ?

如何使用appStoreReceiptURL

transactionReceipt已被弃用。 但我无法使用, [[NSBundle mainBundle] appStoreReceiptURL]. 这应该是返回一个url到收据,如果有的话。 但对于我来说,没有一个,因为这个价值是零,据我所知不应该是。 我在iOS 7上运行,并做了一些应用内购买(设备上的沙箱)。 任何人都可以帮忙

如何在iOS InApp购买时select不购买商品时自定义error handling?

例如,当用户要求在InApp购买期间login时,他们可以点击“取消”button,然后应用程序将鞋 Can't connect to the iTunes Store 是否有可能使用我们自己的callback,而不是这个标准的消息?