zoukankan      html  css  js  c++  java
  • 内购 & 广告

    内购——应用内购买
    通过苹果应用程序商店有三种主要赚钱的方式:
    直接收费(与国内大部分用户的消费习惯相悖)
    广告
    O2O -> Online推广 & Offline交易,闭环
    不要砍功能,增加内容,而不是增加功能
    内购:应用程序本身的增值产品,游戏装备,应用程序中增值功能同样可以内购
    第三方支付:跟应用程序无关的
    内购:三(苹果)七(开发商)开

    提示:
    要做好游戏 & 应用,一定要研究心理,要研究哲学
    人人都是产品经理


    内购的五种产品类别


    非消耗品(Nonconsumable)一旦购买,终身拥有
    指的是在游戏中一次性购买并拥有永久访问权的物品或服务。非消耗品物品可以被用户再次下载,并且能够在用户的所有设备上共享
    消耗品(Consumable),买了就用,用了就没
    消耗品购买不可被再次下载,根据其特点,消耗品不能在用户的设备之间跨设备使用,除非自定义服务在用户的账号之间共享这些信息

    以下三种类别在iBooks中使用,目前iBooks不支持大陆市场
    ISBN:每本书的一个ID
    免费订阅(Free subscriptions)
    自动续费订阅(Auto-renewing subscriptions)
    非自动续费订阅(Nonrenewing subscriptions)

    准备工作

    消耗品定义

    语言及测试用户信息

    定义的商品

    修改应用程序信息

    添加StoreKit框架
    要使用内购,需要导入StoreKit框架


    内购的常用方法
    请求有效的产品代号集合
    购买指定产品
    验证购买(在购买完成之后,验证)
    恢复购买(针对非消耗品)

    请求有效产品集合

    // 1) 实例化产品请求
    SKProductsRequest *request = [[SKProductsRequest alloc]initWithProductIdentifiers:identifiers];
    // 2) 设置代理
    [request setDelegate:self];
    
    // 3) 启动请求
    [request start];
    
    提示:
    1. 实例化请求时,必须指定有效的identifiers集合,之所以如此处理,主要是为了确保提交的内购商品真的通过了苹果的审批,处于可用状态!
    2. 要想获取到准确的可用产品集合,需要通过代理方法实现
    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
    3. 越狱用户无法测试内购,但是可以购买

    购买产品

    1. 内购的交易过程是通过SKPaymentTransactionObserver监控的,因此需要为IAPHelper添加交易观察者:
    
    // 添加交易观察者对象
    [[SKPaymentQueue defaultQueue]addTransactionObserver:sharedInstance];
    
    2. 由于发起交易需要使用SKProduct对象,因此需要使用字典记录所有可用的商品
    
    NSMutableDictionary         *_productsDict;

    交易队列回调方法

    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
    {
        for (SKPaymentTransaction *transaction in transactions) {
            // 购买完成
                if (transaction.transactionState == SKPaymentTransactionStatePurchased) {
                NSLog(@"购买完成 %@", transaction.payment.productIdentifier);
    
                [queue finishTransaction:transaction];
            } else if (transaction.transactionState == SKPaymentTransactionStateFailed) {
                if (transaction.error.code != SKErrorPaymentCancelled) {
                    NSLog(@"交易失败: %@", transaction.error.localizedDescription);
                }
            }
        }
    }

    恢复购买

    [[SKPaymentQueue defaultQueue]restoreCompletedTransactions];

    购买数据记录问题——系统偏好

    [[NSUserDefaults standardUserDefaults]setBool:isPurchased forKey:productId];
    [[NSUserDefaults standardUserDefaults]synchronize];

    广告简介
    在苹果的广告市场上有两套系统
    -展现,程序只要嵌入广告即可
    -发布

    广告的展现
    -广告的展现内容,是由苹果根据应用程序的关键字,分类,上架地区等综合评定后自动推送的
    -应用程序无需关心

    广告收益三七开
    添加 iAd.framework 框架
    添加 ADBannerView 视图,并设置代理方法
    广告条加载完成之前最好隐藏
    - (void)bannerViewDidLoadAd:(ADBannerView *)banner {
        self.bannerBottomConstraint.constant = 20.0;    
        [UIView animateWithDuration:0.5 animations:^{
            [self.view layoutIfNeeded];
        }];    
        NSLog(@"加载广告成功");
    }
    - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
        NSLog(@"加载广告失败 %@", error);
    }
  • 相关阅读:
    个人介绍
    2021-03-16 助教小结
    2020软件工程作业05
    2020软件工程作业04
    2020软件工程作业03
    第二次作业 计划与执行
    从蓝天到名利 所有你想要的 都别随风去
    Android Task 相关
    Android ViewDragHelper源码解析
    android利用反射通过代码收缩通知栏
  • 原文地址:https://www.cnblogs.com/laugh/p/7130844.html
Copyright © 2011-2022 走看看