"App App Purchase (iAd 제거) 기능을 갖춘 완벽한 기능 코드는 여기에 있습니다.하지만 MyScene (SpriteKit) 게임에서 구현해야합니다. 여기 있습니다. 이 강아지까지 메시지를 작동하는 전체 코드를 만들있는 UIButton를 누를 때 여기 In App 구매 (광고 제거) 스프라이트 키트
#import <UIKit/UIKit.h>
#import <SpriteKit/SpriteKit.h>
#import <iAd/iAd.h>
@interface ViewController : UIViewController<ADBannerViewDelegate>
@property (nonatomic,strong) NSArray*products;
@property(nonatomic,strong)NSUserDefaults*defaults;
- (IBAction)removeAdvertisment:(id)sender;
@end
ViewController.h
가 나타나고 제거 할 수 있습니다 플레이어가 구입하여 추가 내 ViewController.m#import "ViewController.h"
#import "MyScene.h"
#import <StoreKit/StoreKit.h>
@implementation ViewController
@synthesize /*idBanner*/ products,defaults;
- (void)viewDidLoad
{
[super viewDidLoad];
//Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
[[SKPaymentQueue defaultQueue]addTransactionObserver:(id)self];
defaults =[NSUserDefaults standardUserDefaults];
BOOL isPro=[defaults boolForKey:@"isPro"];
if (!isPro) {
//user code here
[self fetchProducts];
}
else
{
//iadBanner.alpha=0.0;
}
}
-(void)bannerViewDidLoadAd:(ADBannerView *)banner{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[banner setAlpha:1];
[UIView commitAnimations];
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[banner setAlpha:0];
[UIView commitAnimations];
}
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return UIInterfaceOrientationMaskAllButUpsideDown;
} else {
return UIInterfaceOrientationMaskAll;
}
}
-(void)fetchProducts{
SKProductsRequest*request = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithArray:@[@"ProductIDPurchaseID"]]];
request.delegate = (id)self;
[request start];
}
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
products = response.products;
NSLog(@"The app wass purchased");
}
-(void)request:(SKRequest*)request didFailWithError:(NSError *)error{
NSLog(@"%@",error);
}
-(void)buy:(SKProduct*)product{
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue]addPayment:payment];
}
-(void)paymentQueue:(SKPaymentQueue*)queue updatedTransactions:(NSArray *)transactions{
for (SKPaymentTransaction *tx in transactions) {
switch (tx.transactionState) {
case SKPaymentTransactionStatePurchased:
[[SKPaymentQueue defaultQueue]finishTransaction:tx];
//_____________________
//iadBanner.alpha=0.0;
//______________________
[defaults setBool:YES forKey:@"isPro"];
break;
case SKPaymentTransactionStateFailed:
[[SKPaymentQueue defaultQueue]finishTransaction:tx];
NSLog(@"Error:%@",tx.error);
break;
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue]finishTransaction:tx];
break;
default:
break;
}
}
}
- (IBAction)removeAdvertisment:(id)sender {
SKProduct *prod = [products objectAtIndex:0];
[self buy:prod];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end
입니다
"광고를 제거"이 방법은 정공 코드 일 수
(IBAction를) removeAdvertisment (ID) 송신기 {
SKProduct의 자극 * = [제품 objectAtIndex : 0]; [자기 구매 : 찌르다]; }
하지만 내가 태어나 셨는 그래서 질문은 내가 MyScene 클래스에서 removeAdvertisement (버튼 위) 메소드를 호출 할 어떻게
SKScene
의 MyScene 클래스의 서브 클래스에서 호출 할 수 있습니다?
그래서 그때 내가 그렇게 같은 MyScene.m 파일에 새로운 방법을 만들어 내 MyScene.h 파일의 ViewController의 싱글을 만들었습니다. window.rootViewController; [_gameViewController removeAdvertisement (@ "value")]]; }이 "inAccess"메서드를 "TouhchesBegins"에 넣고 싶지만이 코드 줄이 작동하지 않습니다. 컴파일러에서 인식하지 못하고 "expected '와 같은 어리석은 실수를합니다." "그리고" (@ "value") "는이 줄에 있음을 의미합니다 [gameViewController removeAdvertisement (@"value ")] ;? 무엇을 넣어야합니까? –
미안, 내 실수 [gameViewController removeAdvertisement]; 여기서 removeAdvertisement는 뷰 컨트롤러에서 선언 한 public 함수입니다 – dragoneye
답장을 보내 주셔서 감사합니다! 나는 당신의 제안을 후자를 시도하고, 나는 당신이 어쨌든 회신 upvoted! 희망이 작동하지만 어쨌든 도움을 시도해 주셔서 감사합니다. 그것이 작동하면 나는 당신에게 "답변"으로 다시 응답 해 주셔서 감사합니다. –