在我的应用程序中,我必须在以下场景中实现应用程序购买:- 应用程序对所有用户免费,即每个人都可以免费下载。我为此实现了 Consumable 类型。在应用程序中有一个选项以 1.99 美元购买 10 个硬币。一旦用户成功完成交易,但当用户再次点击购买 10 个硬币时,它提示“您已经下载了这个应用程序”。我想在那个 wat 中实现应用程序购买,以便用户可以购买 10 个硬币的多种类型?这将是什么类型和场景。
请建议?
在我的应用程序中,我必须在以下场景中实现应用程序购买:- 应用程序对所有用户免费,即每个人都可以免费下载。我为此实现了 Consumable 类型。在应用程序中有一个选项以 1.99 美元购买 10 个硬币。一旦用户成功完成交易,但当用户再次点击购买 10 个硬币时,它提示“您已经下载了这个应用程序”。我想在那个 wat 中实现应用程序购买,以便用户可以购买 10 个硬币的多种类型?这将是什么类型和场景。
请建议?
- (void)requestProductData {
// NSLog(@"%@",strCheck);
if ([strCheck isEqualToString:@"inApp"]) {
myString = strCheck;
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:@"All_labelling"]];
request.delegate = self;
[request start];
}
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSArray *myProduct = response.products;
SKPayment *payment = [SKPayment paymentWithProduct:[myProduct objectAtIndex:0]];
[[SKPaymentQueue defaultQueue] addPayment:payment];
[request autorelease];
}
- (void)inAppPurchase {
reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"LeaderFollow!" message:@"Network is not found" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[alert show];
[progInd stopAnimating];
[progInd setHidden:YES];
}
else if ([SKPaymentQueue canMakePayments]) {
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
[self requestProductData];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please enable the ability to make purchases." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
}
- (void)finishMyTransaction:(SKPaymentTransaction *)transaction {
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
self.view.userInteractionEnabled=YES;
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
[progInd stopAnimating];
[progInd setHidden:YES];
}
#pragma mark Payment Delegate
#pragma mark -
- (void)recordTransaction:(SKPaymentTransaction *)transaction {
}
- (void)provideContent:(NSString *)productIdentifier {
if([productIdentifier isEqualToString:@"All_labelling"]){
strCheck=@"inApp";
myString=strCheck;
}
if ([strCheck isEqualToString:@"inApp"]){
[prefs setBool:YES forKey:@"inApp"];
if(!isTapped){
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Congratulations!" message:@"You Have Successfully Purchased All Objects Pack" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
[self viewWillAppear:YES];
}
//}
[progInd stopAnimating];
[progInd setHidden:YES];
}
- (void)completeTransaction:(SKPaymentTransaction *)transaction {
[self recordTransaction:transaction];
[self provideContent:transaction.payment.productIdentifier];
[self finishMyTransaction:transaction];
}
-(IBAction)btnRestoreTapped{
[progInd setHidden:NO];
[progInd startAnimating];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
[[UIApplication sharedApplication]beginIgnoringInteractionEvents];
}
- (void)restoreTransaction: (SKPaymentTransaction *)transaction {
[self recordTransaction:transaction];
[self provideContent:transaction.originalTransaction.payment.productIdentifier];
[self finishMyTransaction:transaction];
}
- (void)failedTransaction: (SKPaymentTransaction *)transaction {
if (transaction.error.code != SKErrorPaymentCancelled) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:[transaction.error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
[self finishMyTransaction:transaction];
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
break;
default:
break;
}
}
}
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{
[progInd stopAnimating];
[progInd setHidden:YES];
[[UIApplication sharedApplication]endIgnoringInteractionEvents];
if([prefs boolForKey:@"inApp"]){
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"LeaderFollow!" message:@"You Have Successfully Restored Pack(s)" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
[alert release];
[prefs setObject:@"YES" forKey:@"Restore"];
}
else{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"LeaderFollow!" message:@"No purchases to restore" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
isTapped=NO;
}
- (void)paymentQueue:(SKPaymentQueue*)queue restoreCompletedTransactionsFailedWithError:(NSError*)error
{
[[UIApplication sharedApplication]endIgnoringInteractionEvents];
[progInd stopAnimating];
isTapped=NO;
self.view.userInteractionEnabled=YES;
[progInd setHidden:YES];
}