IOS 之 商业模式 应用内购买

学习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];
    }
}

 

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

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值