学习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(非消耗型产品)接置配置一下就可以了.
SKProductsRequest 是请求售卖商品
SKProductsResponse 是请求商品的响应类
SKProduct 是商品的明细
SKPaymentQueue 支付队列,每生成一笔交易都要添加到此队列中来挨个支付
SKPayment 购买商品的支付明细,生成后需要添加到支付队列
SKPaymentTransaction 支付过后的响应类
下边是程序里的一些实现代码
需要加入,还需要建立一个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<SKPaymentTransaction *> *)transactions {
NSLog(@"交易事件");
for (SKPaymentTransaction *transaction in transactions)
{
switch ( transaction.transactionState )
{
case SKPaymentTransactionStatePurchasing:
//交易中
break;
case SKPaymentTransactionStatePurchased:
//交易结束
break;
case SKPaymentTransactionStateFailed:
//交易失败
break;
case SKPaymentTransactionStateRestored:
//恢复购买中
break;
case SKPaymentTransactionStateDeferred:
//交易还在队列里边,状态最终没有决定
//这里不用再队列中去掉
continue;
default:
break;
}
//不管是哪种状态的交易最终都要执行这步从付款队列中移除
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
}
总之赚钱门路很多,祝大家发财!哈哈