真机调试、打包测试、发布、内购,广告

一.真机调试

1.什么是真机调试?

简单理解就是将App项目运行到真机上进行测试.

2.真机调试的必要

真机和模拟器环境的差异:

  • 内存环境,网络环境;
  • 传感器: 磁力计,陀螺仪,距离传感器等;
  • 特定功能:拍照, 打电话,发短信,蓝牙等(真机才有)
  • 用户体验不一样所以APP发布之前一定要做真机调试!!!
3.怎样做真机调试?

Xcode7.0之前(并不是任何人,任何电脑,任何APP,任何真机设备都可以进行真机调试的)
①限制人

②限制电脑

  • 配置与电脑关联的cer证书 ,需要使用需要真机调试的电脑,生成CER文件 (CER文件: 证书签名请求文件)

③限制App

  • 配置需要真机测试App的BundleID (区分不同APP,就是通过App的唯一标识: BundleID)

④限制真机设备

  • 配置需要真机测试的真机UDID (苹果每台真机设备都拥有一个唯一标识:UDID)

Xcode7.0之后

  • 只需要AppID(在Xcode7 -> preference -> Account 中添加即可。 此时直接真机调试时,会弹出一个框,提示缺少描述文件. 直接点击”Fix issue”选项,Xcode会自动请求苹果服务器生成对应的描述文件)
4.真机调试注意事项

①以上步骤完成后,你会有两个文件:cer文件,MobileProvision文件,只需要双击安装即可.

  • cer证书被添加到钥匙串中
  • 描述文件被安装到Xcode中 (资源库 -> MobileDevice -> Provisioning Profiles)

②必须保证cer证书和描述文件一致( Xcode -> targets -> build setting -> code signing)

③ 创建一个APP,并确认BundleID与配置一致 (如果不一致, 修改XCode项目的BundleID, 与配置一致)

④真机运行时, 如果发现真机设备无法选中,查看项目最低部署版本是否过高, 大于真机设备的系统版本

5.补充

开发者账号分类:

①个人账号(99$)==688

  • 功能:可以真机调试, 打包测试, 程序发布
  • 优点:申请速度快, 给钱就行, 1-3个工作日即可
  • 缺点:
    • iTunes查看到的是个人信息, 无法间接为公司做宣传
    • 无法创建管理自己的开发团队

②公司账号(99$)

  • 功能:可以真机调试, 打包测试, 程序发布
  • 优点:
    • iTunes可以查看企业信息, 间接为公司做宣传
    • 可以创建和管理自己的开发团队
  • 缺点:
    • 申请复杂,需要”邓白氏”认证
    • 申请周期比较长(连同”邓白氏编码”申请, 最好准备30天左右时间)

③企业账号(299$)

  • 功能:可以真机调试, 打包测试
  • 优点:
    • 可以在企业内部随意安装到苹果设备,不需要经过AppStore审核
    • 可以创建和管理自己的开发团队
    • 版本更新迭代比较快, 不需要经过审核
  • 缺点:
    • 申请复杂,需要”邓白氏”认证
    • 申请周期比较长(连同”邓白氏编码”申请, 最好准备30天左右时间)
    • 不能使用此证书,将App发布到AppStore
6.开发经验

①尽量不要从网络渠道以及代申请的公司去申请”邓白氏编码”,因为花钱多, 而且申请下来的”邓白氏编码”不一定和苹果服务器数据库内一致, 最终导致不可用,浪费时间和金钱。最正确的做法: 直接和苹果客服MM联系, 她们会告诉你申请流程, 需要提交哪些材料。客服电话: 400 670 1855

②企业级账号使用场景:

  • App是针对某一特定人群制定使用.只在企业内部安装, 无需发布到AppStore供他人下载

③默认真机调试证书只能生成两个!!(也就意味着,只能绑定两台电脑进行真机调试)

  • 注意:如果别人已经配置了两个,而且正在使用不能随便把别人的证书删除。
  • 解决方案: 此时只能使用从已经配置证书的电脑中,导出P12文件,进行共享( 让其他电脑设备不需要生成cer证书,也可以进行真机调试)。

④测试的真机设备UDID最多只能添加100次, 而不是100台。也就是说, 如果你加够了100次之后, 即使删除之前的设备名额, 也无法继续添加。苹果会在下一年, 给你一次删除设备的机会, 你可以删除一些设备, 来恢复一些名额.但是, 一旦你添加了设备后, 苹果则视为你自动放弃添加设备!!

二.打包测试

1.什么是打包测试?
  • 就是指将项目打包成为.ipa的压缩包, 供指定设备安装测试.
2.为什么要做打包测试?
  • 当进入到测试阶段, 需要专门的测试人员对APP进行测试, 此时需要将APP安装到测试人员的测试设备上, 此时最佳的方案, 就是直接将项目打包成为.ipa包, 供测试人员下载测试。
3.怎样进行打包测试?

步骤:

  • 1.登录apple的开发者主页:developer.apple.com(限制人必须有apple ID 和开发者账号)

  • 2.选择Ad Hoc生成一个ios_distribution.cer: 让电脑具备打包程序的能力(限制电脑得配置打包测试证书,再利用该电脑生成CER文件)

  • 3.新建一个App ID : 确定哪个APP可以被打包测试(限制app
    配置需要真机测试App的BundleID)

  • 4.利用用户设备的UDID注册设备(限制真机设备,确定哪些设备可以被打包测试,苹果每台真机设备都拥有一个唯一标识:UDID)

  • 5.选择Ad Hoc利用ios_distribution.cer + 设备UDID + App ID --> 描述文件

    • 描述文件的作用:
      • 能知道在哪台电脑上, 为哪台设备打包哪个程序
      • 哪台设备需要测试哪个程序.
  • 6.安装证书和描述文件

    • ios_distribution.cer
    • nj_iphone6_news.mobileprovision
  • 7.项目Scheme右边的设备选择iOS Device

  • 8.点击Xcode的菜单Product --> Archive --> Distribute --> ....Ad Hoc... --> 选择对应的描述文件

  • 9.生成一个ipa文件,发给测试人员和客户 ipa本质是zip (android的安装包是APK格式,本质也是zip)

拓展:TestFlight(Beta版本测试):

步骤:

1.测试者提供他们的邮箱

2.开发者登录iTunes Connect给测试者发送邮件邀请

3.测试者接受邀请,通过TestFlight软件下载安装程序

对比打包测试:

①步骤很少,操作简单

②打包测试更多的还是针对公司内部测试人员,TestFlight更多的是面向真正的用户。

三.程序发布

1. 什么是程序发布?
  • 就是指将APP发布到AppStore, 供指定区域用户下载
2. 为什么要程序发布?
  • 你确定要问这个问题??? 好吧, 答案是赚钱
3. 程序发布的步骤?

①限制人

②限制电脑

  • 重新配置一个发布证书需要使用需要程序发布的电脑,生成CER文件( CER文件: 证书签名请求文件)

③限制app

  • 配置需要真机测试App的BundleID 。区分不同APP,就是通过App的唯一标识: BundleID

④根据2,3重新生成发布描述文件

⑤在开发中心新建App, 并填写App相关的信息

  • 就比如我们下载别人的app,就会发现里面有预览图片, app版本,以及功能简介等信息, 那这些信息都是我们在这一步填写的

⑥准备好一个写好的完整应用程序

  • 注意:必须要有程序图标,启动图片等,否则上传会失败

⑦运行设备选择真机后 选择Product -> Archive
⑧选择 submit 打包项目,上传构建版本
⑨提交审核

4.经验补充

1.常规审核周期

  • 审核周期2至20天不等, 而且他们碰到节假日还放假,遇到老板催的紧真蛋疼。。

2.加急审核

3.加急审核注意事项(亲身体验)

  • 加急审核,审核更加严格,亲身体验
  • 首次发布,一般加急审核不给审批
  • 加急审核申请一定要理由足够强大(可以说:上线后发现重大Bug)
  • 加急审核好爽, 只要你申请加急审核通过了. 那么只要你的app没有上架,就会一直处于加急审核状态, 一直到你上架为止, 此次加急才算结束(曾经有连续被拒7次经验,历时才10天)
  • 加急审核有次数限制(一年好像有3次, 我只用过一次,没测试过)

四.内购

1. 什么是内购?
  • 内购就是指,在APP内购买某些产品。
    如果你在App中销售的商品,跟App有关(例如植物大战僵尸中的道具,需要开启关卡,拥有某种技能等等).那么,苹果规定,必须通过内购方式购买.
    内购分成: 3 : 7
2. 为什么做内购?
  • 开发者创收的一种模式: free + 内购。
  • 某些业务必须使用内购。
3. 内购的产品类型?

①非消耗品(Nonconsumable)

  • 买了就一直有,不会消耗,例如开启关卡
    一般指的是在游戏中一次性购买并拥有永久访问权的物品或服务。非消耗品物品可以被用户再次下载,并且能够在用户的所有设备上使用

②消耗品(Consumable)

  • 买了就用,用了就没
    专为支持可消耗的物品或服务设计的,消耗品购买不可被再次下载,根据其特点,消耗品不能在用户的设备之间跨设备使用,除非自定义服务在用户的账号之间共享这些信息

③其他类型

  • 以下三种类别在iBooks中使用,目前iBooks不支持大陆市场
    免费订阅(Free subscriptions)
    自动续费订阅(Auto-renewing subscriptions)
    非自动续费订阅(Nonrenewing subscriptions)

拓展:内购演练

  1. 在App管理中心,创建一个App,并填写App信息
    注意: 此处创建的App时,填写套装ID,时,必须选择可以内购的套装ID

  2. 创建内购商品,并添加到App,指定此App,可以销售哪些商品
    注意: 创建内购商品的前提,是你已经填写了税务/银行信息,否则的话,无法创建

  3. 添加用于测试内购的测试账号

  4. 创建App项目,开始开发

  5. 代码实现内购流程如下:
    (1) 从APP服务器请求数据列表, 并向苹果服务器请求可以销售的商品列表

     [YPDataTool getGoodsWithResult:^(NSArray *goods) {
         NSArray *ids = [goods valueForKeyPath:@"goodID"];
         // 请求哪些商品可以卖
         NSSet *idSet = [NSSet setWithArray:ids];
         SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:idSet];
         request.delegate = self;
         [request start];
     }];
    

(2) 在代理方法中获取并显示可销售列表

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
     self.products = response.products;
}

(3) 用户购买商品, 并监听商品交易状态

// 取出商品
SKProduct *product = self.products[indexPath.row];

// 购买商品
SKPayment *payMent = [SKPayment paymentWithProduct:product];

// 把凭证加入到队列, 等待用户付款
[[SKPaymentQueue defaultQueue] addPayment:payMent];

// 设置监听者, 监听整个交易状态
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

(4) 实现监听交易状态方法

// 交易状态发生变化时调用
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions
{

   [transactions enumerateObjectsUsingBlock:^(SKPaymentTransaction * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop)
    {

         //  SKPayment *payment , 小票 , 包含商品
         //  SKPaymentTransactionState transactionState 交易状态
     switch (obj.transactionState) {
         case  SKPaymentTransactionStatePurchasing:
             NSLog(@"正在付款");
         break;

         case  SKPaymentTransactionStatePurchased:
             {
                 NSLog(@"付款结束");
                 [queue finishTransaction:obj];
                 break;
             }
         case  SKPaymentTransactionStateFailed:
             {
                    NSLog(@"交易失败");
                 [queue finishTransaction:obj];
                 break;
             }
         case  SKPaymentTransactionStateRestored:
             NSLog(@"恢复购买");
             break;
         case SKPaymentTransactionStateDeferred:
                NSLog(@"推迟付款");
             break;

         default:
             break;
     }
    }];
}

五.广告

1.广告的作用?
  • 属于创收的一种方式, 你在App内展示广告,苹果会付费给你,分成从原来的4:6 到 3:7
2.如何展示广告?
  • 导入框架: iAd.framework
  • 添加控件: ADBannerView
  • 实现代理 ADBannerViewDelegate,优化用户体验
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容