京城游戏人-Day11: Unity 中实现 IAP 内购(内付费)
-
- 作者:大锐哥
- 地址:http://blog.csdn.net/prevention
-
一、先说基本流程
- 在 iTunes Connect 中创建 IAP(In-App Purchase)
- 编写 Objective-C 的代码
- 编写 Unity C# 的代码
- 生成 iOS 工程,并在 Xcode 中调试
其中在 iTunes Connect 中的操作,与研发关系不大,这里省略。
二、编写 Objective-C 代码
创建两个类,分别是 IAPInterface,主要用于两种语言之间的交互调用。另一个是 IAPManager。注意这两个类的名字叫什么并不重要。
2.1 IAPInterface.h
#import <Foundation/Foundation.h>
@interface IAPInterface : NSObject
@end
2.2 IAPInterface.m
#import "IAPInterface.h"
#import "IAPManager.h"
@implementation IAPInterface
...
@end
其中...
包括如下方法。
// Unity to iOS
void TestMsg() {
NSLog(@"Msg recved");
}
// Unity to iOS
void TestSendString(void *p) {
NSString *list = [NSString stringWithUTF8String:p];
NSArray *listItems = [list componentsSeparateByString:@"\t"];
for (int i = 0; i < listItems.count; ++i) {
NSLog(@"msg %d: %@", i, listItems[i]);
}
}
// iOS to Unity
void TestGetString() {
NSArray *test = [NSArray arrayWithObjects:@"t1", @"t2", @"t3", nil];
NSString *join = [test componentsJoinedByString:@"\n"];
UnitySendMessage("Main", "IOSToU", [join UTF8String]);
}
并且要增加一个私有成员变量:IAPManager *iapManager = nil;
void InitIAPManager(){
iapManager = [[IAPManager alloc] init];
[iapManager attachObserver];
}
bool IsProductAvailable(){
return [iapManager CanMakePayment];
}
// 获取商品信息
void RequstProductInfo(void *p){
NSString *list = [NSString stringWithUTF8String:p];