您的位置:首页 > 移动开发 > IOS开发

IOS 之 商业模式 应用内购买

2013-12-21 17:33 309 查看
学习IOS开发一个目的是学技术,最重要的就是获利啦!其中有以下几种获利模式.

一.产品定价: 一次购买终身免费使用.这个不再多讲.

二.植入广告: 在程序内插入一些广告,来获利.可以使用以下几种方式:

1.使用苹果的iAd广告. 使用前要引入iAd.framework框架并且导入iAd.h头文件.

横幅广告 使用时用ADBannerView类和ADBannerViewDelegate协议实现.

- (void)viewDidLoad
{
[super viewDidLoad];
//如果是IOS6以上则可以调用initWithAdType方法
ADBannerView *bannerView = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
bannerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
bannerView.delegate = self;

[self.view addSubview:bannerView];

// Do any additional setup after loading the view from its nib.
}

-(void)bannerViewDidLoadAd:(ADBannerView *)banner
{
NSLog(@"广告加载成功");
}

-(void)bannerViewActionDidFinish:(ADBannerView *)banner
{
NSLog(@"广告关闭");
}

-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
NSLog(@"广告加载失败: %@", [error localizedDescription]);
}


插页广告 使用时用ADInterstitialAd类和ADInterstitialAdDelegate协议实现.

- (void)viewDidLoad
{
[super viewDidLoad];
ADInterstitialAd *interstitialAD = [ADInterstitialAd new];
interstitialAD.delegate = self;
}

-(void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd
{
NSLog(@"广告加载成功");
}

-(void)interstitialAdDidUnload:(ADInterstitialAd *)interstitialAd
{
NSLog(@"广告卸载");
}

-(void)interstitialAd:(ADInterstitialAd *)interstitialAd didFailWithError:(NSError *)error
{
NSLog(@"广告加载失败");
}

-(BOOL)interstitialAdActionShouldBegin:(ADInterstitialAd *)interstitialAd willLeaveApplication:(BOOL)willLeave
{
NSLog(@"可以执行一个广告动作");
return YES;
}

-(void)interstitialAdActionDidFinish:(ADInterstitialAd *)interstitialAd
{
NSLog(@"广告关闭, 用户关闭模态窗口时回调");
}


查看收入,通过iTunes Connect(https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa)

登录后点击 iAd Newwork链接,然后是Summary就可以看到了.

还有一些其它广告的SDK等等都可以使用.

三.应用内购买: 就是下载使用时免费,在内部增加一些商品,一些道具,或者限制使用时间来获利.

使用应用内购买的话可以使用苹果公司为我们提供的开发API---Store Kit, 苹果提供的应用内购买产品类型有3种:

1.消耗型 产品购买之后即被消费,再次购买该产品时还需要支付,只能应用于当前设备.

2.非消耗型 一旦购买可以一直使用,而且可以与该用户的帐号关联的多个设备上使用.

3.订阅型 在订阅周期内可以免费使用.一般这种类型都得自己架设服务器用来保存用户的信息和购买记录.

事实上Store Kit只是帮助收集付款信息,其他工作还得开发人员来设计和实现.下边我们来重点说一下消耗型的购买.

第一步 打开开发者网站登录https://developer.apple.com/ios/manage/overview/index.action, 点击Manage Users添加测试用户

第二步 复制你APP里的Bundle Identifier来生成测试App ID. 然后在网站上添加你的收费应用.

第三步 在iTunes Connect中为应用添加购买产品, 在主界面里点击Manage You Applications进去后先择你的应用,然后点击Manage In Purchases按钮进入应用内购买产品管理界面,点Create New,打开后选择Non-Consumable(非消耗型产品)接置配置一下就可以了.

下边是程序里的一些实现代码

需要加入,还需要建立一个plist文件用来存放购买产品标识

#import <StoreKit/StoreKit.h> 和协议 <SKProductsRequestDelegate, SKPaymentTransactionObserver>

-(void)viewDidLoad
{
[super viewDidLoad];
self.priceFormatter = [[NSNumberFormatter alloc] init];
//定义数字格式化行为
[self.priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
//设置NSNumberFormatter格式为通用货币
[self.priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
//读取资源文件,里边存放的是产品标识
NSString *path = [[NSBundle mainBundle] pathForResource:@"ProductIdentifiers" ofType:@"plist"];
NSArray *arrary = [[NSArray alloc] initWithContentsOfFile:path];
self.productIdentifiers = [[NSSet alloc] initWithArray:arrary];
//添回自己作为交易观察者对象
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
}

//请求产品数据
-(IBAction)request:(id)sender
{
//检查设备是否可以应用内购买
if ( [SKPaymentQueue canMakePayments] ) {
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:self.productIdentifiers];
request.delegate = self;
[request start];
}
}

//start发出请求后执行下边委托方法
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
self.skProducts = response.products;
for (SKProduct *skProduct in self.skProducts) {
NSLog(@"找到产品:%@ %@ %0.2f",
skProduct.productIdentifier,
skProduct.localizedTitle,
skProduct.price.floatValue);
}
}

//购买时的方法
-(IBAction)buy:(id)sender
{
//取第一个产品来测试购买
SKProduct *product = self.skProducts[0];
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}

//上边代码执行过后,返回结果数据执行下边代理方法
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions) {
switch ( transaction.transactionState ) {
case SKPaymentTransactionStatePurchased: //交易完成
//一些处理
//移除付款队列
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed: //交易失败
break;
case SKPaymentTransactionStateRestored: //交易恢复
break;
default:
break;
}
}
}


总之赚钱门路很多,祝大家发财!哈哈

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: