ios nslog 例子_unity-ios交互例子

//

//  IAPManager.m

//  Unity-iPhone

//

//  Created by MacMini on 14-5-16.

//

//

#import "IAPManager.h"

@implementation IAPManager

-(void) attachObserver{

NSLog(@"AttachObserver");

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

}

-(BOOL) CanMakePayment{

return [SKPaymentQueue canMakePayments];

}

-(void) requestProductData:(NSString *)productIdentifiers{

NSArray *idArray = [productIdentifiers componentsSeparatedByString:@"\t"];

NSSet *idSet = [NSSet setWithArray:idArray];

[self sendRequest:idSet];

}

-(void)sendRequest:(NSSet *)idSet{

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:idSet];

request.delegate = self;

[request start];

}

-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{

NSArray *products = response.products;

for (SKProduct *p in products) {

UnitySendMessage("Main", "ShowProductList", [[self productInfo:p] UTF8String]);

}

for(NSString *invalidProductId in response.invalidProductIdentifiers){

NSLog(@"Invalid product id:%@",invalidProductId);

}

[request autorelease];

}

-(void)buyRequest:(NSString *)productIdentifier{

SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];

[[SKPaymentQueue defaultQueue] addPayment:payment];

}

-(NSString *)productInfo:(SKProduct *)product{

NSArray *info = [NSArray arrayWithObjects:product.localizedTitle,product.localizedDescription,product.price,product.productIdentifier, nil];

return [info componentsJoinedByString:@"\t"];

}

-(NSString *)transactionInfo:(SKPaymentTransaction *)transaction{

return [self encode:(uint8_t *)transaction.transactionReceipt.bytes length:transaction.transactionReceipt.length];

//return [[NSString alloc] initWithData:transaction.transactionReceipt encoding:NSASCIIStringEncoding];

}

-(NSString *)encode:(const uint8_t *)input length:(NSInteger) length{

static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

NSMutableData *data = [NSMutableData dataWithLength:((length+2)/3)*4];

uint8_t *output = (uint8_t *)data.mutableBytes;

for(NSInteger i=0; i

NSInteger value = 0;

for (NSInteger j= i; j

value<<=8;

if(j

value |=(0xff & input[j]);

}

}

NSInteger index = (i/3)*4;

output[index + 0] = table[(value>>18) & 0x3f];

output[index + 1] = table[(value>>12) & 0x3f];

output[index + 2] = (i+1)>6) & 0x3f] : '=';

output[index + 3] = (i+2)>0) & 0x3f] : '=';

}

return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

}

-(void) provideContent:(SKPaymentTransaction *)transaction{

UnitySendMessage("Main", "ProvideContent", [[self transactionInfo:transaction] UTF8String]);

}

-(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) completeTransaction:(SKPaymentTransaction *)transaction{

NSLog(@"Comblete transaction : %@",transaction.transactionIdentifier);

[self provideContent:transaction];

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

}

-(void) failedTransaction:(SKPaymentTransaction *)transaction{

NSLog(@"Failed transaction : %@",transaction.transactionIdentifier);

if (transaction.error.code != SKErrorPaymentCancelled) {

NSLog(@"!Cancelled");

}

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

}

-(void) restoreTransaction:(SKPaymentTransaction *)transaction{

NSLog(@"Restore transaction : %@",transaction.transactionIdentifier);

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

}

@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值