├── demo ├── main.js ├── appledev.png ├── datausa.jpg ├── fbaudnet.png ├── richman.jpg ├── torchapp.png ├── admobbanner.png ├── admobnewapp.png ├── admobpay1.png ├── admobpay2.png ├── admobpay3.png ├── admobsite.png ├── cordovaios.png ├── cordovaproj.png ├── databrazil.jpg ├── datagermany.jpg ├── datajapan.jpg ├── helloworld.png ├── verifypin.png ├── verifypin2.png ├── admobadunitid.png ├── androidbanner.jpg ├── iphonebanner.jpg ├── iphonebanner2.jpg ├── itunesconnect.png ├── topadnetworks.jpg ├── admobnewbanner.png ├── admobprodltrend.png ├── androidbanner2.jpg ├── appstorenewapp.png ├── poor-programmer.jpg ├── xcodeorganizer.png ├── helloworldcordova.png ├── iphoneinterstitial.jpg ├── androidinterstitial.jpg ├── main.css └── index.html ├── .gitignore ├── joyrun_dpgr.md ├── README.zh.md └── README.md /demo/main.js: -------------------------------------------------------------------------------- 1 | // main.js 2 | console.log('hello, world!'); 3 | 4 | -------------------------------------------------------------------------------- /demo/appledev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/appledev.png -------------------------------------------------------------------------------- /demo/datausa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/datausa.jpg -------------------------------------------------------------------------------- /demo/fbaudnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/fbaudnet.png -------------------------------------------------------------------------------- /demo/richman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/richman.jpg -------------------------------------------------------------------------------- /demo/torchapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/torchapp.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # ignore following files 2 | .DS_Store 3 | .settings 4 | .idea 5 | *.iml 6 | node_modules 7 | tmp 8 | -------------------------------------------------------------------------------- /demo/admobbanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobbanner.png -------------------------------------------------------------------------------- /demo/admobnewapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobnewapp.png -------------------------------------------------------------------------------- /demo/admobpay1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobpay1.png -------------------------------------------------------------------------------- /demo/admobpay2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobpay2.png -------------------------------------------------------------------------------- /demo/admobpay3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobpay3.png -------------------------------------------------------------------------------- /demo/admobsite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobsite.png -------------------------------------------------------------------------------- /demo/cordovaios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/cordovaios.png -------------------------------------------------------------------------------- /demo/cordovaproj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/cordovaproj.png -------------------------------------------------------------------------------- /demo/databrazil.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/databrazil.jpg -------------------------------------------------------------------------------- /demo/datagermany.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/datagermany.jpg -------------------------------------------------------------------------------- /demo/datajapan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/datajapan.jpg -------------------------------------------------------------------------------- /demo/helloworld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/helloworld.png -------------------------------------------------------------------------------- /demo/verifypin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/verifypin.png -------------------------------------------------------------------------------- /demo/verifypin2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/verifypin2.png -------------------------------------------------------------------------------- /demo/admobadunitid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobadunitid.png -------------------------------------------------------------------------------- /demo/androidbanner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/androidbanner.jpg -------------------------------------------------------------------------------- /demo/iphonebanner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/iphonebanner.jpg -------------------------------------------------------------------------------- /demo/iphonebanner2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/iphonebanner2.jpg -------------------------------------------------------------------------------- /demo/itunesconnect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/itunesconnect.png -------------------------------------------------------------------------------- /demo/topadnetworks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/topadnetworks.jpg -------------------------------------------------------------------------------- /demo/admobnewbanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobnewbanner.png -------------------------------------------------------------------------------- /demo/admobprodltrend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/admobprodltrend.png -------------------------------------------------------------------------------- /demo/androidbanner2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/androidbanner2.jpg -------------------------------------------------------------------------------- /demo/appstorenewapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/appstorenewapp.png -------------------------------------------------------------------------------- /demo/poor-programmer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/poor-programmer.jpg -------------------------------------------------------------------------------- /demo/xcodeorganizer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/xcodeorganizer.png -------------------------------------------------------------------------------- /demo/helloworldcordova.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/helloworldcordova.png -------------------------------------------------------------------------------- /demo/iphoneinterstitial.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/iphoneinterstitial.jpg -------------------------------------------------------------------------------- /demo/androidinterstitial.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/floatinghotpot/coding-to-monetization/HEAD/demo/androidinterstitial.jpg -------------------------------------------------------------------------------- /demo/main.css: -------------------------------------------------------------------------------- 1 | /* main.css */ 2 | body { 3 | width: 100%; 4 | height: 100%; 5 | padding: 0px; 6 | margin: 0px; 7 | } 8 | h1 { 9 | padding: 40px; 10 | margin: 10px; 11 | background-color: yellow; 12 | color: blue; 13 | border: 1px solid gray; 14 | display: inline-block; 15 | } 16 | 17 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hello 7 | 8 | 9 | 10 | 11 |

Hello, World!

12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /joyrun_dpgr.md: -------------------------------------------------------------------------------- 1 | 根据《个人信息保护法》《数据安全法》等法律法规,结合悦跑圈APP的实际功能及法律合规要求,分析如下: 2 | 3 | --- 4 | 5 | ### 一、悦跑圈APP是否提供运动数据导出功能? 6 | 1. **官方未直接提供数据导出途径** 7 | 根据公开信息和用户实测,悦跑圈APP**未在应用内设置一键导出个人运动数据(如GPX/FIT等格式文件)的功能**。用户无法直接通过官方界面导出完整的跑步轨迹、心率等原始数据。 8 | 9 | 2. **间接导出需依赖第三方工具** 10 | - 用户可通过技术手段(如GitHub开源项目`running_page`)调用悦跑圈API,输入手机号及验证码后批量导出GPX格式的运动轨迹文件。 11 | - 另有工具如“佳速通”支持将悦跑圈数据迁移至佳明等平台,但需手动操作且非官方提供。 12 | 13 | 3. **数据同步功能有限** 14 | 悦跑圈支持从跑表(如颂拓、佳明)、跑步机导入数据,但**反向导出至其他运动平台(如Strava、RQrun)的官方接口缺失**,导致用户需借助复杂流程实现跨平台迁移。 15 | 16 | --- 17 | 18 | ### 二、是否涉嫌违反《个人信息保护法》? 19 | #### (一)法律依据核心条款 20 | 《个人信息保护法》第45条明确规定用户享有: 21 | - **查阅复制权**:个人有权要求处理者提供其个人信息副本; 22 | - **可携带权**:在符合网信部门规定条件下,个人可要求将数据转移至指定平台。 23 | 24 | #### (二)悦跑圈的合规性分析 25 | 1. **未完全履行“可携带权”义务** 26 | - 若悦跑圈**未提供任何数据导出或转移途径**,则涉嫌违反第45条关于“提供转移途径”的强制性规定。 27 | - 当前其依赖用户自行通过第三方脚本导出,**将合规成本转嫁给用户**,不符合“便捷转移”的立法精神。 28 | 29 | 2. **敏感个人信息的特殊保护要求** 30 | 运动数据包含行踪轨迹、健康生理信息等敏感内容(《个保法》第28条),处理者需承担更高保护义务。**拒绝用户控制权可能加重侵权风险**。 31 | 32 | 3. **合规例外尚不适用** 33 | 法律允许豁免的场景限于国家安全、公共利益等(第18条),而运动数据导出**不涉及此类例外**,故悦跑圈难以主张免责。 34 | 35 | #### (三)违法性认定 36 | 综合判断,**悦跑圈未提供官方数据导出功能的行为涉嫌违反《个保法》第45条**,尤其在以下方面: 37 | - 侵犯用户对个人数据的控制权与可携带权; 38 | - 未满足“最小必要、便捷转移”的合规要求。 39 | 40 | --- 41 | 42 | ### 三、法律风险与改进建议 43 | 1. **企业风险** 44 | - 用户可向网信部门投诉,若查实违规,企业可能面临**最高5000万元或年营业额5%的罚款**(《个保法》第66条)。 45 | - 损害品牌公信力,触发用户流失(如案例中用户因无法同步数据转向RQrun)。 46 | 47 | 2. **改进建议** 48 | - **增加数据导出接口**:提供GPX/TCX等标准格式导出,或接入国家网络身份认证公共服务实现安全转移; 49 | - **开放API互联**:与Strava、佳明等平台合作,满足用户无缝迁移需求。 50 | 51 | --- 52 | 53 | ### 四、用户当前维权方案 54 | - **投诉渠道**:向属地网信部门或消协提交书面投诉,要求责令悦跑圈履行数据转移义务; 55 | - **技术自救**:使用开源工具(如`running_page`)导出数据,但需注意信息安全风险; 56 | - **平台迁移**:转向支持数据可携性的APP(如Strava、RQrun)。 57 | 58 | --- 59 | 60 | ### 结论 61 | 悦跑圈当前**未提供官方数据导出功能,涉嫌违反《个人信息保护法》第45条**。用户可依法主张权利,同时建议企业尽快完善数据可携机制以实现合规。运动数据作为用户数字资产,其自主控制权是数字时代的基本法治保障。 62 | 63 | > 法律要求与现状对比表: 64 | > 65 | > | **合规要求** | **悦跑圈现状** | **是否合规** | 66 | > |----------------------------|------------------------------|--------------| 67 | > | 提供个人信息副本 | 仅支持App内查看,无导出选项 | ❌ 否 | 68 | > | 支持跨平台数据转移 | 需用户依赖第三方工具 | ❌ 否 | 69 | > | 敏感信息特殊保护 | 未提供更高阶数据控制权 | ❌ 否 | 70 | > | 响应可携带权请求 | 未建立官方转移途径 | ❌ 否 | 71 | -------------------------------------------------------------------------------- /README.zh.md: -------------------------------------------------------------------------------- 1 | # 从编码到变现:程序员财务自由之路 2 | 3 | From Coding to Monetization:Programmer's Financial Freedom Approach 4 | 5 | [英文版本 / English Version](./README.md) 6 | 7 | ![大富豪](demo/richman.jpg) 8 | 9 | ### 目录 10 | 11 | * [前言](#前言) 12 | * [定位](#定位) 13 | * [基础篇](#基础篇) 14 | * [语言与工具选择](#语言与工具选择) 15 | * [Hello, World!](#hello-world) 16 | * [单机版APP](#单机版APP) 17 | * [加个广告条](#加个广告条) 18 | * [注册广告账号](#注册广告账号) 19 | * [验证地址和设置收款信息](#验证地址和设置收款信息) 20 | * [发布APP](#发布APP) 21 | * [广告收益的计算](#广告收益的计算) 22 | * [进阶篇](#进阶篇) 23 | * [需求是根本](#需求是根本) 24 | * [用户体验](#用户体验) 25 | * [哪种广告最适合](#哪种广告最适合) 26 | * [哪家广告商最靠谱](#哪家广告商最靠谱) 27 | * [营销你的产品](#营销你的产品) 28 | * [联网版APP](#联网版APP) 29 | * [云服务](#云服务) 30 | * [高级篇](#高级篇) 31 | * [数据分析](#数据分析) 32 | * [广告优化](#广告优化) 33 | * [支付与内购](#支付与内购) 34 | * [社交营销](#社交营销) 35 | * [广告投放](#广告投放) 36 | * [附录](#附录) 37 | * [互联网营销常用术语](#互联网营销常用术语) 38 | * [如何发布 APP 到 Apple AppStore](#如何发布-app-到-apple-appstore) 39 | * [如何发布 APP 到 Google Play Store](#如何发布-app-到-google-play-store) 40 | * [如何发布 APP 到 360 应用商店](#如何发布-app-到-360-应用商店) 41 | * [如何用 Google Analytics 做用户数据分析](#如何用-google-analytics-做用户数据分析) 42 | 43 | ### 前言 44 | 45 | 这本书,是写给程序员看的。 46 | 47 | 这并不是关于一门编程语言,也不是关于一种设计模式,更不是关于如何评估工程量、如何做项目管理。 48 | 49 | 这本书是关于:变现(monetization),通俗的说,就是赚钱。 50 | 51 | 作为程序员,你一定花了大量的时间去学习,掌握了若干种编程语言、用过数十种开发工具。为了设计稳定灵活的架构,你也认真学习和掌握了各种设计模式;为了提高工作效率,你也用了各种成熟的框架以及自动化测试的工具;总之,通过学习,你成为了一个牛B的程序员。 52 | 53 | 甚至,你也积累了管理的经验,主动学习了项目管理的理论知识、各种研发组织模式,也许会进阶到管理岗位,成为研发团队的负责人或者经理人。 54 | 55 | 在大部分的情况下,作为程序员或者研发团队,你按照项目经理 或者 产品经理给的需求,进行需求分析、架构设计、模块划分、接口设计、编码实现、测试、提交版本。这些环节,毫无疑问,是做研发的程序员最为熟悉的流程。 56 | 57 | 不幸的是,你日常所关注的,仅仅只是研发环节。接受需求,交付版本,这就是产品经理或者甲方让你干的事情。很多在研发领域侵淫多年的研发大牛,也往往并不熟悉软件怎样能够直接带来经济回报。绝大多数的开发者,仅仅关注研发这个环节,甚至仅仅关注在编码这个环节,这是非常局限的。 58 | 59 | 事实上,研发环节,再加上销售、收款、推广、用户支持、维护,这才是软件产生经济回报的完整闭环。 60 | 61 | 然而,软件怎样直接带来经济回报,这方面的技术文章或者书籍并不多见。这也是我为什么会选择这个角度,作为本书下笔的核心内容。 62 | 63 | 这本书是关于,如何从编码、到如何接受付款,以及如何获取用户。手把手,教你每一个步骤。 64 | 65 | 一旦你掌握软件如何变现的能力,你会更加关心用户反馈、关心市场需求、关心产品质量,因为这些都会为你带来更好的经济收益。实现财务自由,也就并不遥远了。 66 | 67 | 如果你觉得本书的内容有所帮助,请点赞支持。 68 | 69 | ### 定位 70 | 71 | 既然是谈赚钱,类似于外包这种把有限的生命折算成man hour来卖钱的苦逼方式,我们暂不讨论。 72 | 73 | 考虑到人力、时间、成本等因素,我们也暂时不讨论运营级、或者企业级的大型系统。研发周期长、投入大、需求复杂,也超过个人和小团队的掌控。 74 | 75 | 在移动互联网时代,以个人或者小团队,实现赚钱、甚至创造奇迹的故事,屡见不鲜。 76 | 77 | 真实案例 1: 78 | 79 | [Flappy Bird](https://zh.wikipedia.org/wiki/Flappy_Bird) 传奇,一个花2-3天开发出来的小游戏,在短短几周时间席卷全球,并获得了每天 5 万美金的广告收益。这无疑有偶然、运气的成分,但至少这是有概率发生的事情。 80 | 81 | 真实案例 2: 82 | 83 | 我认识一个波兰的老外,用做网页的技术,做了个并不复杂的计算器,大概也就是按照百分比计算下小费之类的。在欧洲好几个国家的应用商店上财务类APP,排名前几,通过广告条变现,赚了不少钱。 84 | 85 | 真实案例 3: 86 | 87 | 在2010年左右,我在一家开发保险软件的公司工作。 公司发展得相当好,2000年创立,经过10年发展到1000人的规模,管理层试图上市。 然而并不顺利,又过了许多年,它还没有能够IPO。我个人以为,是商业模式的问题,围绕着大保险公司客户的需求,有太多的定制开发。这与外包模式太接近了,而不是产品模式或平台模式,难以规模化扩张。 88 | 89 | 我在这家公司工作的时候,有两位同事阳陆育与朱骏。他们在2014年离开了这家公司,成立了一家初创公司,开发一个手机上的短视频APP,成为一个短视频社区平台。团队仅仅6个人,他们开发出的一个小小的产品,却带来了爆炸式的增长。在经过3年的创新和努力之后,也就是2017年,他们被今日头条以10亿美元的估值收购了。 90 | 91 | 最初APP的名字叫Musical.ly,也许你不一定熟悉它,但是你一定知道后来它的鼎鼎大名,Tiktok。对,就是那个超越了 Facebook、经常排在应用商店第一名的APP。它在全世界的影响力,甚至大到曾经被特朗普威胁要制裁。 92 | 93 | 你可以找到其他类似的成功故事,从移动应用程序或游戏中成功的赚到钱。 稍微留意一下,你很可能从朋友圈听说过一些,或者可以从互联网搜索一下,这样的故事不胜枚举。 94 | 95 | 在这本书里,我们要探讨的是,集中非常有限的时间、精力,聚焦到非常狭窄的需求领域,开发移动应用 APP、小游戏,发布到全球应用商店、获取用户、并实现盈利。 96 | 97 | 也许你是技术的大牛,掌握了数十种编程语言、设计模式、前端到后端的全栈开发能力。然而,并不是每项技术,都能够实现快速赚钱的。最艰深、最有趣的技术,未必是最容易赚到钱的技术。有时候,我们要做最容易扩展的架构。有时候,我们要选择最快速开发的技术手段。 98 | 99 | 也许你是刚入门的菜鸟,只会做做网页什么的。那也没有关系,赚钱真正需要的编程技术,其实也可以非常简单。只是有一点,需要什么知识,我们就恶补什么知识。由于技术日新月异,程序员必须是最善于学习的群体。 100 | 101 | ### 基础篇 102 | 103 | ### 语言与工具选择 104 | 105 | 开发 APP 的语言与工具,通常与平台密切相关。 106 | * 如果是 iOS,那通常是 Objective C,开发工具是苹果推出的 [Xcode](https://developer.apple.com/xcode/) (开发工具仅运行于 Mac)。 107 | * 如果是 Android,那通常是 Java,开发工具是 谷歌推出的 [Android Studio](http://developer.android.com/tools/studio/index.html)(开发工具有跨平台版本)。 108 | * 如果是 Windows Phone,那就是 C#,开发工具是 微软推出的 [Visual Studio](https://www.visualstudio.com/en-us/visual-studio-homepage-vs.aspx)(开发工具仅运行于 Windows)。 109 | 110 | 除此之外,还有一些跨平台语言与工具,对于开发者更加友善,可以开发一次,多平台打包发布: 111 | * 可以开发游戏与APP的 HTML5,以 javascript 作为主要的开发语言。 112 | * 用于开发游戏的 [Cocos2d-X](http://www.cocos2d-x.org/),用的是 C++ 作为主要的开发语言。 113 | * 用于开发游戏的 [Unity3D](http://unity3d.com/) IDE 以及集成的 MonoDevelop,用的是 C# 作为主要的开发语言。 114 | * 微软收购的 [Xamarin](https://www.xamarin.com/) 以及赞助的开源项目 [Mono](http://www.mono-project.com/),用来开发 APP,以 C# 作为主要的开发语言。 115 | 116 | 在下文的教程中,我们选择最简单的 javascript 作为后续介绍的主要开发语言。 117 | 118 | 注意: 119 | 千万不要对 javascript 有刻板印象,而认为它仅仅是做网页的简单脚本程序。 120 | 121 | 实际上,它是编程用途极为广泛的语言,也是 github 上最为活跃的语言。它可以用来开发: 122 | * 运行于浏览器内的 Web网页; 123 | * 运行与内嵌浏览器的 单页WebApp; 124 | * 基于 [nodejs](https://nodejs.org/) 的命令行工具,例如 Cordova CLI 命令行工具; 125 | * 基于 nodejs 的网络云服务,例如 亚马逊 的 Bluestacks 云服务; 126 | * 基于 [cordova](http://cordova.apache.org/) 技术的,混合(hybrid) APP。 127 | * 基于 [react-native](http://www.reactnative.com/) 开发 native UI体验的 APP。 128 | * 甚至,也能够使用[Electron](https://www.electronjs.org/)开发出桌面应用,例如 Atom,Visual Studio Code 代码编辑器。 129 | 130 | 因为使用 javascript 可以同时用来开发前端和后台,代码逻辑也可以用来前后端复用,从而降低技能门槛和开发成本。入门所需要的开发环境也要求非常低,只要有个友好的代码编辑器,有个浏览器可以用来运行和调试,就可以了。 131 | 132 | 以下是用 javascript 来做开发的所需要的环境和工具: 133 | * Chrome浏览器,自带开发者工具 和 javascript 控制台,用来运行和调试。 134 | * [Adobe Brackets](http://brackets.io/) 文本编辑器(如果你习惯 [Sublime Text](http://www.sublimetext.com/) 或者 [Atom](https://atom.io/) 或者 [Visual Studio Code](http://code.visualstudio.com/),也没问题) 135 | * iMac台式机,巨大的27寸屏幕,视野不受限制;Mac OS X命令行非常强大方便,通过 [MacPorts](https://www.macports.org/) 或者 [Homebrew](http://brew.sh/),Linux 上有的命令行工具或者 library 都基本支持。 136 | * Xcode(只有 Mac 版本),要调试 iOS APP,有台 iMac电脑或者 MacBook笔记本电脑,这也是必备的。 137 | * Android Studio,用来调试 Android APP。 138 | 139 | 如果你习惯了 Windows 也没有一台 Mac,那就会稍微麻烦一点。虽然也是有方法的,有一些专门提供编译、打包的云服务,但是这些服务往往出于商业利益的关系,会调整策略终止服务。 140 | 例如: 141 | * Adobe PhoneGap Build 142 | 已失效。从 2020.10.1 之后,Adobe 已经停止服务 该云服务。 143 | * Intel XDK 144 | 已失效。XDK 已被英特尔重新用于物联网开发,核心移动开发功能已被英特尔弃用且不再受支持。 随附的跨平台 Cordova 云构建服务已下线。 不建议将 XDK 用于新的手机/平板应用程序开发项目。 145 | * [Ionic AppLow](https://ionic.io/appflow) 146 | Appflow 是 Ionic 开发团队的持续集成 (CI) 和持续部署 (CD) 平台。它声称 Ionic Appflow 可以将构建部署到目的地,例如 Apple App Store 和 Google Play Store,完全在云中。 147 | 148 | ### Hello, World! 149 | 150 | 用 javascript 开发前端,其实需要的是 3 项相关的语言:HTML / javascript / CSS。 151 | * HTML 负责内容 152 | * javascript 负责逻辑 153 | * CSS 负责渲染表现 154 | 155 | 以下是一个简单的例子: 156 | ```html 157 | 158 | 159 | 160 | 161 | 162 | Hello 163 | 164 | 165 | 166 | 167 |

Hello, World!

168 | 169 | 170 | ``` 171 | ```javascript 172 | // main.js 173 | console.log('hello, world!'); 174 | ``` 175 | ```css 176 | /* main.css */ 177 | body { 178 | width: 100%; 179 | height: 100%; 180 | padding: 0px; 181 | margin: 0px; 182 | } 183 | h1 { 184 | color: blue; 185 | padding: 40px; 186 | margin: 10px; 187 | border: 1px solid gray; 188 | display: inline-block; 189 | } 190 | ``` 191 | 192 | 用 Chrome 浏览器打开它,于是我们看到如下的展示: 193 | * 上面的浏览器主窗口,显示了 HTML 的内容,并且用 CSS 指定的格式和效果进行了渲染。 194 | * 下面打开 Chrome 的 console 窗口,则显示了 javascript 调用 console.log() 输出的调试信息。 195 | 196 | ![HelloWorld](demo/helloworld.png) 197 | 198 | 用 HTML5 / javascript 做开发,入门就是这么简单。 199 | 200 | 如果需要开发出高质量的 APP,需要熟练掌握 HTML/CSS 和 javascript,尤其是 HTML5 / CSS3,掌握 HTML DOM 以及 javascript 的一些常见库,例如 [jQuery](https://jquery.com/),等等。这里有一些免费的入门教程: 201 | * [HTML 系列教程](http://www.w3school.com.cn/h.asp) 202 | * [JavaScript 入门教程](http://www.w3school.com.cn/js/index.asp) 203 | * [JavaScript 高级教程](http://www.w3school.com.cn/js/index_pro.asp) 204 | 205 | 通过这些教程的学习,你能够做到: 206 | * 一个简单的 index.html 页面; 207 | * 一个统一的 main.css 文件,能够对界面元素的表现加以控制和调整; 208 | * 一组 javascript 文件,能够通过对 HTML DOM 的访问,实现内容的动态展示和切换。 209 | 210 | 对于作为程序员的你,这根本不是什么难的事情。 211 | 212 | ### 单机版APP 213 | 214 | 下一步,我们要把这样一个简单的网页程序 (web app),变成一个手机上的 APP。准确的说,它应该是叫 Hybrid APP,即混合程序。因为它的外面是 native app 封装了一个 webview,里面运行的是 我们写的 web app。 215 | 216 | 我们需要用到 cordova 技术框架。它原本是 Adobe 公司收购的一个小团队开发的产品,被重新命名为 [PhoneGap](http://phonegap.com/)。后来 Adobe 将其开源,并捐赠给 Apache 基金会,然后被称为 [Apache Cordova](https://cordova.apache.org/),现在已经成为一个非常流行的技术框架,也得到很多商业公司的追捧,除了 Adobe 之外,Intel、微软、IBM 等公司也都推出了支持 Cordova 的产品。 217 | 218 | Cordova 技术框架提供了一个命令行的工具,是用 nodejs 开发的。 219 | 220 | 我们首先要装 [nodejs](https://nodejs.org/en/),安装之后,会提供 2 个基本的命令: 221 | ```bash 222 | $ which node 223 | /usr/local/bin/node 224 | $ node -v 225 | v4.2.1 226 | $ npm -v 227 | 2.14.7 228 | ``` 229 | * node --- 负责 javascript 程序的编译/解释/执行。它是基于谷歌开源的 Chrome V8 引擎的,基于事件驱动、不阻塞 IO模式运行,轻量而高效。 230 | * npm --- NodeJs Package Manager, 安装包管理器。所有的 nodejs 包都是用 npm 来下载和安装(你也可以用它来发布你自己的包到 npm 库)。 231 | 232 | 接下来,用 npm 安装 [cordova](https://cordova.apache.org/): 233 | ```bash 234 | $ npm install -g cordova 235 | $ which cordova 236 | /usr/local/bin/cordova 237 | $ cordova -v 238 | 5.4.1 239 | ``` 240 | 241 | 用 cordova 创建一个项目: 242 | ```bash 243 | # 格式为:cordova create <目录名> 244 | $ cordova create temp com.rjfun.demo Demo 245 | ``` 246 | 247 | 然后编译,并在 iOS 模拟器中运行这个项目: 248 | ```bash 249 | $ cd temp 250 | $ cordova platform add ios 251 | $ cordova build ios 252 | $ cordova emulate ios 253 | ``` 254 | 255 | 于是可以看到 iOS 模拟器被启动,然后 APP 运行: 256 | 257 | ![Cordova iOS](demo/cordovaios.png) 258 | 259 | 或者你也可以把 iPhone 用 USB 线连接到 Mac,然后用这个命令安装、启动刚刚编译的 APP: 260 | ```bash 261 | $ cordova run ios --device 262 | ``` 263 | 264 | 现在运行的是 Cordova 自带的 Demo 工程。打开 Cordova 项目,可以看到这样的目录结构: 265 | 266 | ![Cordova Proj](demo/cordovaproj.png) 267 | 268 | 接下来,删去 www 目录下的内容,用我们前面写的 index.html, main.js, main.css 替换,并略作修改: 269 | ```html 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | Hello 286 | 287 | 288 | 289 | 290 |

Hello, World!

291 | 292 | 293 | ``` 294 | 295 | ```javascript 296 | // main.js 297 | console.log('hello, world!'); 298 | 299 | // 当 APP 初始化完成,会触发 'deviceready' 事件,我们可以调用 cordova 框架以及插件提供的 API 和功能 300 | document.addEventListener('deviceready', function(){ 301 | console.log('deviceready'); 302 | 303 | // TODO: 开始我们 web app 的业务逻辑 304 | }); 305 | ``` 306 | 307 | ```css 308 | /* main.css */ 309 | body { 310 | width: 100%; 311 | height: 100%; 312 | padding: 0px; 313 | margin: 0px; 314 | background-color: silver; 315 | } 316 | h1 { 317 | padding: 40px; 318 | margin: 30px; 319 | background-color: yellow; 320 | color: blue; 321 | border: 1px solid gray; 322 | display: inline-block; 323 | } 324 | ``` 325 | 326 | 重新运行 cordova 项目(会自动编译、安装、运行): 327 | ```bash 328 | $ cordova emulate ios 329 | ``` 330 | 331 | 于是,可以看到 Web App 在 iOS 模拟器中运行了: 332 | 333 | ![Hello World Cordova](demo/helloworldcordova.png) 334 | 335 | 做个最简单的APP,其实也很简单,是不是?! 336 | 337 | ### 加个广告条 338 | 339 | 作为程序员,我们毫不怀疑,你可以通过掌握的 HTML/CSS 以及 javascript 编程能力,提供一些有趣、有用的功能。 340 | 341 | 接下来,我们要给这个 APP 加上变现(monetization)的功能,即实现赚到真金白银。 342 | 343 | 变现最简单的方法,就是加上广告条,例如谷歌的AdMob。 344 | * 通过展示广告,用户对有兴趣的广告点击,浏览产品、或者安装其他的 APP。 345 | * 投放广告的个人/公司(简称广告主,Advertizer)会支付广告费给谷歌。 346 | * 而谷歌则会将其中的一部分,支付给发布广告的个人/公司(简称发布商, Publisher)。 347 | * 谷歌在其中扮演的角色,则称之为广告平台(Ad Platform)、或者广告中介(Ad Network)。 348 | 349 | Cordova 框架的技术架构,是 Web APP 加上一些通用的插件,提供手机特定功能的访问、与第三方系统的集成。 350 | 351 | 我们通过插件 cordova-plugin-admobpro 来实现与谷歌 AdMob 的集成。这是基于谷歌 AdMob SDK 开发的一个插件,也是目前变现插件中最流行、最容易使用的。通过它,只需一行 javascript 代码就可以完成对 SDK API 的调用。 352 | 353 | 现在让我们往 cordova 项目工程中加入插件。 354 | 355 | ```bash 356 | $ cordova plugin add cordova-plugin-admobpro 357 | ``` 358 | 359 | 然后修改 main.js,在 APP 初始化完毕时,我们加几行代码。 360 | 361 | ```javascript 362 | // main.js 363 | console.log('hello, world!'); 364 | 365 | // 当 APP 初始化完成,会触发 'deviceready' 事件,我们可以调用 cordova 框架以及插件提供的 API 和功能 366 | document.addEventListener('deviceready', function(){ 367 | console.log('deviceready'); 368 | 369 | // 在 APP 初始化完毕时,在屏幕下方创建一个广告条 370 | if(AdMob) AdMob.createBanner({ 371 | adId: 'ca-app-pub-6869992474017983/4806197152', // 需要到 AdMob 官方网站注册用户,并创建广告单元 Ad Unit Id 372 | position: AdMob.AD_POSITION.BOTTOM_CENTER, // 展示在屏幕下方中央 373 | overlap: false, // 不要覆盖 Web APP 的内容 374 | isTesting: true, // 展示测试广告,在正式发布时,去掉这行 375 | autoShow: true // 广告资源就绪时,自动开始展示 376 | }); 377 | }); 378 | ``` 379 | 380 | 重新运行 cordova 项目(会自动编译、安装、运行): 381 | ```bash 382 | $ cordova emulate ios 383 | ``` 384 | 385 | 于是,可以看到 Web App 在 iOS 模拟器中运行了: 386 | 387 | ![AdMob Banner](demo/admobbanner.png) 388 | 389 | 看,屏幕下方的广告条展示出来了。 390 | 391 | 这里只是仅供调试用的测试广告。我们需要到 [AdMob官方网站](https://apps.admob.com/)注册用户,并创建广告单元(Ad Unit Id),并用来替换掉 代码中 adId 后面的这串数字。并在发布的正式版本中,去掉 `isTesting:true` 这行代码。 392 | 393 | ### 注册广告账号 394 | 395 | 下面我们就介绍,如何注册账号,如何创建广告单元,如何设置银行收款信息。 396 | 397 | 由于价值观方面的原因,谷歌的网站基本上都是被隔离在中国大陆局域网之外,通常是无法访问的。需要通过 VPN 等科学上网的方式才能够访问。如果你不知道如何科学上网,可以写邮件给我,单独讨论这个问题,这里暂不展开。 398 | 399 | 访问谷歌AdMob官网( https://www.google.com/admob/ ),注册新账号。 400 | 401 | ![AdMob Site](demo/admobsite.png) 402 | 403 | 注册完成之后,登陆 AdMob 网站( https://apps.admob.com/ ),点击菜单“获利”,点击左上角的红色按钮“+通过新应用获利” 添加新APP: 404 | 405 | ![AdMob New App](demo/admobnewapp.png) 406 | 407 | 然后创建横幅广告: 408 | 409 | ![AdMob New Banner](demo/admobnewbanner.png) 410 | 411 | 即可获得广告单元 ID,将其 copy 到源代码中: 412 | 413 | ![AdMob Ad Unit ID](demo/admobadunitid.png) 414 | 415 | ### 验证地址和设置收款信息 416 | 417 | 注册账号之后,广告单元进入APP投放实际使用,即可积累广告收益。 418 | 419 | 要收到谷歌支付的广告分成,还有 2 个步骤要完成: 420 | * 验证地址。谷歌会生成一个 PIN 码,打印在卡片上,邮寄到你的通信地址。 421 | * 设置收款信息。可以是 西联汇款 或者 银行账号。 422 | 423 | 不过,刚注册的账号还不允许设置这个信息。只有你的累计广告收入达到基本的门槛(目前是 10美金),谷歌才会允许进入设置支付信息的环节。谷歌通过这个方法,可以过滤掉大量的无效账号。 424 | 425 | #### 验证 PIN 码: 426 | 427 | ![Verify PIN](demo/verifypin.png) 428 | 429 | 点击“立即改正此问题”,进入 PIN 码输入界面。 430 | 431 | ![Verify PIN](demo/verifypin2.png) 432 | 433 | 验证 PIN 码这个过程比较缓慢,通常需要 2-4 周的时间。所以如果显示了最近生成 PIN 码的日期,就耐心等待吧。收到 PIN 码之后,就将其输入上面这个框,提交验证。 434 | 435 | #### 设置收款信息: 436 | 437 | ![AdMob Payment](demo/admobpay1.png) 438 | 439 | ![AdMob Payment](demo/admobpay2.png) 440 | 441 | ![AdMob Payment](demo/admobpay3.png) 442 | 443 | 等这 2 个步骤设置完成,当产生广告收益的时候,谷歌就会在每个月的月末,计算当月的广告收益,然后在下个月的 20日左右支付给你。 444 | 445 | ### 发布APP 446 | 447 | 我们完成的 APP,要被用户安装使用并产生收益,还缺少一个重要的环节:发布 到应用商店。 448 | * 如果是 Android APP,通常是 Google Play Store。中国大陆用户通常访问不到,则可以选择发布到大陆的一些应用商店,例如 360、豌豆荚 等等。 449 | * 如果是 iOS APP,则是发布到苹果 AppStore。 450 | 451 | 这里我们以苹果 AppStore 为例,来说明如何注册开发者账号,并发布 APP。 452 | 453 | 访问苹果开发者网站( https://developer.apple.com/ ),并注册登录。要在 苹果AppStore发布应用,需要支付每年 99 美金的年费,对于个人开发者、公司开发者,这个费用都是一样的。 454 | 455 | ![Apple Developer](demo/appledev.png) 456 | 457 | 注册成功的开发者,需要下面几个步骤,才能将 APP 发布到 AppStore: 458 | * 生成开发者数字证书,用于安装包的签名。 459 | * 为你的 APP 创建 APP ID,如果不涉及内购,也可以用 “*” 或者 “com.rjfun.*” 作为一个通用的 APP ID,在多个 APP 中使用。 460 | * 为你的 APP 生成 Provisioning Profiles,并下载到 本地用 Xcode 打开、管理。 461 | 462 | 然后用 Xcode 打开 Cordova 项目里的 XXX.xcodeproj 工程文件,编译并存档(Archive)。成功存档的 APP 包,才能提交到 AppStore 进行审核。 463 | 464 | APP 提交前,需要到 iTunesConnect ( https://itunesconnect.apple.com/ ),准备、发布和管理你的 APP。 465 | 466 | ![iTunes Connect](demo/itunesconnect.png) 467 | 468 | 创建新的 APP,加上名字、介绍、图标、定价等信息,并将其设置为准备提交的状态,然后就可以通过 Xcode 中的 Organizer 将成功存档(Archive)的安装包提交到 AppStore 进行审核了。 469 | 470 | ![Xcode Organizer](demo/xcodeorganizer.png) 471 | 472 | 苹果审核 APP 的流程大约 1 周左右的时间。如果审核通过,就可以在 AppStore 里面看到你发布的 APP 了。 473 | 474 | ### 广告收益的计算 475 | 476 | 当用户在设备中下载、安装APP并运行的时候,就会从谷歌的广告服务器请求正式的广告内容,并用于展示了。 477 | 478 | 你可以登陆谷歌 AdMob 网站,查看每天的广告展示量、点击率、以及产生的收益。这个网站也提供了非常强大的报表功能,可以根据国家、广告单元、时间段,显示非常详细的报告。谷歌在 AppStore 上发布有一个 AdSense 的 APP,你可以安装这个 APP,每天查看你的 AdMob 收益。 479 | 480 | 每次用户对感兴趣的广告进行点击,就会产生广告收益。大部分的广告投放,是按照点击次数计算费用的,即所谓的 CPC 广告。 481 | 482 | 在计算广告收益的时候,有几个常见的基本术语: 483 | * CPC(Cost Per Click,每次点击费用),大约是 US$ 0.06 ~ 1.0; 484 | * CTR(Click Through Rate,展示点击率),大量统计的结果大约是 1%; 485 | * CPM (Cost Per Mile, 每千次展示费用),通过 CPC 和 CPR 也能够推算出 CPM,大致范围是 US$ 0.5 ~ 5。 486 | 487 | 每次点击的价格,根据广告投放的价格不同而不同。全球不同国家由于经济水平不同,也存在很大的差异。例如, 488 | * 在美国,一次广告点击可能产生 0.2 美元的收益; 489 | * 在巴西,也许只有 2 美分,相差 10 倍。 490 | * 而日本,广告点击的收益是相当高的。 491 | 492 | 下面是一组数据的对比: 493 | 494 | 美国 | 巴西 495 | ---|--- 496 | ![USA](demo/datausa.jpg) | ![Brazil](demo/databrazil.jpg) 497 | 日本 | 德国 498 | ![Japan](demo/datajapan.jpg) | ![Germany](demo/datagermany.jpg) 499 | 500 | 如果我们按照 CPM (每千次展示费用)1美元 来估算,每天 10万次广告展示,大约可以产生 $100美元现金收益。按照 6.45 的汇率计算,一个月30天(包括周末和节假日!),大约可以产生的收益是 ¥19,350。 501 | 502 | 而在上海,5年经验的、技术能力还不错的程序员,薪资大约也就 15,000 左右。如果你做的 APP,每天能够有 1万个用户使用,基本上产生的广告收益和现金流,就可以达到一个程序员的工资水平。 503 | 504 | 我认识一个巴西人,他用 HTML5 技术实现的小游戏,简单,但是非常有趣。每天的活跃用户大约是 10万,广告收益已经超过每个月 15万,从而实现了财务自由。 505 | 506 | ### 进阶篇 507 | 508 | ### 需求是根本 509 | 510 | 前面我们介绍了如何为 APP 增加了变现(monetization)的能力。但要真正获得可观的收益,还必须得有足够多的用户。也就是说,你必须开发出足够好的 APP,能够真正解决用户的问题,才会有更多的用户使用、更高频度的使用。 511 | 512 | 如何能够开发出更受用户欢迎的 APP 呢?其实这不是一个编程问题。 513 | 514 | 也许你是一个技术的大牛,但是最艰深、最牛X的技术,开发出来的软件产品未必是受到用户欢迎的产品。有时候,你用了一种其实比较简单的技术,但是真正关注了用户的痛点,解决了用户关心的问题,很可能你的产品就会受到用户的欢迎,创造出口口相传的良好口碑,在社交网络得到自然传播。 515 | 516 | 我推荐一本书,《需求-缔造伟大商业传奇的根本力量》,作者是亚德里安•斯莱沃斯基。 517 | 518 | 以下是某些创业成功者的推荐: 519 | 520 | > 这是一本好书,每个创业者和每个公司管理者都值得一看,甚至公司中的每个人都应该了解和体会其中的概念。书中给出了一些创造需求的模式,这对读者是非常有价值的,我们需要好的理念,但我们更需要可以践行理念的方法。这两点本书都做到了,非常值得一读,特荐之。 521 | ——孙陶然 ,拉卡拉支付有限公司创始人、董事长兼总裁,《创业36条军规》作者 522 | 523 | > 每一个抱怨的背后都隐藏着一个未被满足的需求,而每一个需求的背后必然隐藏着一个不可忽视的市场。其实任何产品,在一开始满足了用户的功能性需求以后,就应该着手升级到精神层面,用户拒绝麻烦,用户需要安慰,这看起来跟利润无关,但是对不起,它跟你的市场有关。你不去满足,创业者就会自己去进行开拓性满足。那么等待你的,或将是个生死存亡的巨大危机。因此,请一定重视麻烦所带来的希望,而不是去抵触他们的抱怨。这正是《需求》给我们带来的最有价值的东西。 524 | ——杜子建,华艺传媒创始人,社会化媒体营销研究者,畅销书《微力无边》作者 525 | 526 | ### 用户体验 527 | 528 | 为什么苹果手机卖得贵,依然热卖?无疑它是以优秀的用户体验取胜的。如果你看过《乔布斯传》,你可以知道,苹果手机的诞生,其实是解决了传统手机难于使用的痛点。 529 | 530 | 自然我们在手机上开发的 APP 或者 游戏,也必须要高度关注用户体验,并且把它放到战略重点的位置上来。手机 APP,不追求功能的强大、齐全,可以只做一个小小的功能,但是要切实关注用户的需求点、并提供优秀的用户体验。 531 | 532 | 一个相当典型的例子是这款《手电筒》APP,就是打开手机的 LED灯泡,用来临时照亮黑暗。 533 | 534 | ![Torch APP](demo/torchapp.png) 535 | 536 | 这款 APP 的用户已经超过好几亿,自然收益也是极其可观。 537 | 538 | 评价的数量超过600万人次,它的用户是这样写的: 539 | * Jennifer Baylis: 易于使用。#1 最棒的手电筒APP!非常容易使用,打开很快! 540 | * Kitty Davis: 我正是需要这样一个手电筒 APP。 541 | * Dennis Castello: 它正是做到了需要它做的事,而且做的真的很好。 542 | * Joseph Low: 易于使用。轻松地让它干活!强烈推荐! 543 | 544 | ### 哪种广告最适合 545 | 546 | 在移动广告领域,存在多种形式的广告,并且也在不断的发展。 547 | * banner Ad,横幅广告 548 | * interstitial Ad,插屏广告 549 | * native Ad,原生广告 550 | * reward video Ad,奖励视频广告 551 | * IAP (in-app purchase) Ad,内购广告 552 | 553 | 哪种广告适合你的 APP,需要很好的权衡用户体验和收益之间的关系。如果广告展示不当,或者展示过于频繁,影响了用户体验甚至招致用户反感,就本末倒置了。 554 | 555 | 横幅广告 | 插屏广告 556 | ---|--- 557 | ![iPhone Banner](demo/iphonebanner.jpg) | ![iPhone Interstitial](demo/iphoneinterstitial.jpg) 558 | 559 | 这两种广告是最为基本和经典的,各有千秋。相对来说,横幅广告只占用屏幕下方的一小片空间,可以一直滚动展示,默认的是每 60 秒更换一次广告内容。优点是不太会影响用户界面和体验,缺点则是因为不太起眼,不容易引起用户的注意和点击。 560 | 561 | 插屏广告则是全屏的,在特定的时间弹出,更能够吸引用户的眼球和点击。也正是因为这个原因,插屏广告的点击收益比横幅广告要高 5 倍以上,比较推荐使用。 562 | 563 | 使用插屏广告的时候,要特别注意弹出的时间,千万不要打断用户的连续操作和游戏体验,否则不仅不会引起用户的点击,还会引起用户的反感。最佳做法是将其放在 2个阶段之间的过渡时机,例如游戏的一关刚刚结束,弹出插屏广告,然后再继续下一关。 564 | 565 | 通过插件 cordova-plugin-admobpro,要展示插屏广告也是非常简单的,只需要 2 行 javascript 代码就可以完成了。其中一行代码负责准备广告资源,另一行代码负责展示。示范代码如下: 566 | ```javascript 567 | // 在游戏启动时或者进行中,开始准备插屏广告,通过后台线程下载广告资源 568 | if(AdMob) AdMob.prepareInterstitial({ 569 | adId: "__ad_unit_id_here__", 570 | autoShow: false 571 | }); 572 | 573 | // 在游戏关卡结束时,调用 API 进行插屏广告的展示 574 | if(AdMob) AdMob.showInterstitial(); 575 | ``` 576 | 577 | 以上这 2 种广告,是最容易使用的广告形式,集成到 APP 中的工作也最为容易。 578 | 579 | 原生广告(native Ad),就是将广告内容以较为和谐的方式,展示在APP自身的内容之间,不会显得过于突兀和突然,这是对用户体验影响最小的一种广告形式。 Facebook AudienceNetwork 和 Flurry 比较早就推出了原生广告,不过谷歌 AdMob 对此持谨慎态度,仅仅在部分开发者中进行 beta 试用。 580 | 581 | 奖励视频广告(reward video Ad),是谷歌新推出的一种广告。就是鼓励用户看完广告视频,然后开发者在游戏中或者 APP 中给予某种虚拟物品的奖励。在以前的广告推广中,谷歌并不支持在用户接受广告方面给予鼓励的行为,甚至将对点击广告给予奖励的做法定为违规的行为。因为这很可能违背用户本身的兴趣、造成虚假无效点击。新的奖励视频广告方面,谷歌采取了相对灵活和务实的态度。不过这方面的广告视频来源,基本上都是通过广告中介的方式来自于其他的广告网络。 582 | 583 | 内购广告(IAP House Ad)是一种新颖、创新的广告形式,应用内购买广告可让用户直接在应用内购物。因为需要和支付系统、或者谷歌Play Store结合起来,所以仅在 Android 系统支持。通过内购广告,应用开发商可在以下方面获益: 584 | * 通过在同一款应用中实施广告投放和应用内购,可以最大程度地增加您的收入和用户的生命周期价值。 585 | * Google 会自动帮助您确定哪些用户有可能购买应用内购商品,并向其余用户展示普通的付费广告。 586 | * 不需要开发自己的应用内购支持系统,也不需要在应用中加入应用内购支持代码。 587 | * 利用不同的自家内购广告,可以轻松定位用户群体中的各种细分受众群。通过将应用内购广告与 AdMob 受众群体构建工具结合使用,可以向高消费群体投放价格高的应用内购商品,而向其他用户展示价格低的商品。 588 | 589 | 如果要尝试原生广告、奖励视频广告、内购广告,请移步 Google [AdMob 官方文档网站](https://developers.google.com/mobile-ads-sdk/),进行深入研究,学习如何使用。 590 | 591 | ### 哪家广告商最靠谱 592 | 593 | 因为移动广告领域的利润可观,移动广告平台的发展也是非常快的。过去的这些年,也发生了不少并购案。例如 Google先后收购了 DoubleClick 和 AdMob,Flurry 被 Yahoo! 收购,MobFox 被 Matomy 收购,Millennial Media 被 AOL 收购。 594 | 595 | ![Top Ad Networks](demo/topadnetworks.jpg) 596 | 597 | 通常广告平台会提供: 598 | * 接入广告系统的 SDK; 599 | * 注册、登录和管理广告的系统; 600 | * 接入指南、例程、FAQ; 601 | 602 | 各种移动广告平台的相关介绍,可以通过搜索活着其他不同的渠道去了解(例如 StackOverflow.com),并可以有选择性的进行尝试。 603 | 604 | 以下是我试用过的一些广告平台: 605 | * Google AdMob 606 | * Facebook AudienceNetwork 607 | * Yahoo! Flurry 608 | * MobFox 609 | * Apple iAd 610 | * MoPub 611 | * Millennial Media 612 | * InMobi 613 | * OpenX 614 | * Smart AdServer 615 | * ... ... 616 | 617 | 使用下来比较满意的有 AdMob, Facebook AudienceNetwork, Yahoo! Flurry, MobFox。尤其是 AdMob,非常值得推荐。 618 | 619 | AdMob之所以最值得强烈推荐,主要有这样一些突出的优点: 620 | * 广告填充率高(基本上在 98% 以上,有个别国家略低于90%),因此可以充分利用用户流量。毕竟广告是谷歌公司的主要业务和利润来源,其广告客户遍及全球,这也不足为怪了; 621 | * 付款及时,每个月的月底结算,次月 20日支付; 622 | * SDK 非常稳定,接入文档以及参考代码易于使用,并且有不同语言的文档和系统界面; 623 | * 报表系统功能强大、易于使用,可以通过不同的维度进行数据分析; 624 | * 有专门的 APP 可以用来跟踪收益; 625 | * 有专门的技术支持人员,有官方支持的技术论坛,专门解答 SDK 接入方面的技术问题; 626 | * 定期会组织一些宣讲、培训活动,也定期有线上视频讲座; 627 | * 客户服务非常到位,非常的耐心和友善,我和他们也基本上一直保持联系。 628 | 629 | 由于谷歌在各个领域的卓越创新、一贯的优质服务,在开发者中有良好的口碑。 630 | 631 | 而基于 AdMob SDK 开发的 cordova-plugin-admobpro 这款插件,不仅把 Objective-C / Java / C# 的原生 API 封装为统一的 javascript API,而且更加简单易用,只需 1-2 行代码即可完成广告展示。这款插件在 Cordova 全球社区也广受欢迎,是使用率最高的变现插件。以下是插件的下载趋势曲线图: 632 | 633 | ![AdMob Download Trend](demo/admobprodltrend.png) 634 | 635 | Facebook 的 AudienceNetwork 也挺不错。Facebook 不仅仅是最大、最活跃的社交媒体,也提供各种相关 SDK,包括广告用的 AudienceNetwork。其开发者网站为:https://developers.facebook.com/docs/audience-network 。 636 | * Facebook 的 广告填充率(Fill Rate)没有 AdMOb 那么高,大约在45~75% 之间。 637 | * Facebook 付款也很及时,也是在每个月的 21日左右支付上个月的广告收益; 638 | * Facebook 的 SDK 更新非常频繁,大约 2 周左右就会发布一个新的版本,因此如果有什么 bug 修复也很快。不过更新的频度实在有点高,有时候有点跟不上的感觉。相对来说,谷歌 AdMob 的 SDK 更加稳定一些; 639 | * 管理界面和报表系统也比较清楚易用,一目了然。报表系统没有 AdMob 的那么强大和灵活,貌似仅有英文界面,看上去是下面这样的。 640 | 641 | ![Facebook AudienceNetwork](demo/fbaudnet.png) 642 | 643 | Flurry 是一家被 Yahoo!收购的移动广告公司,其官方网站是 http://www.flurry.com/ 。其主要的产品有 2 个,一个是数据分析(Flurry Anlytics),一个是广告系统(Flurry Ads)。 644 | * Flurry SDK 接入也还算比较容易,报表系统中规中矩。就是网站访问稍微有点慢,比较花时间。 645 | * 付款略慢,在广告收益产生的 60天之后才付款。 646 | * 值得一提的是,Flurry 是比较早支持原生广告的(Native Ad)的。 647 | 648 | MobFox 是一家欧洲的移动广告公司,总部位于奥地利。曾经它的 CEO 联系过我,希望能够就某项产品达成合作。后来因为收购事宜暂停,再后来,再后来就知道 MobFox 被 Matomy 收购,项目合作的事情就没有下文了。这家公司还是不错,付款也比较及时。虽然号称是欧洲最大的移动广告公司,并且全球位于 Top 10,但和 Google、Facebook 这样的巨头比起来,在全球范围内的影响力实在有点弱。 649 | 650 | Apple 的 iAd,只是在 iOS 系统上进行投放。由于 iPhone 的市场定位和定价明显要高于 Android 系统,也就决定了 iOS 用户有较强的购买力,所以 iAd 广告的点击回报比较高,也就不言而喻了。不过如果你开发的 APP 需要同时投放 iOS 和 Android 系统,用 AdMob 管理起来相对容易一点。也可以通过 AdMob 的广告中介(mediation)功能,把部分流量通过 iAd 进行展示,从而使得广告收益的利益最大化。 651 | 652 | 像 OpenX 和 Smart AdServer 仅对欧美的签约客户开放,并不针对全球用户和开发者。只是曾经有美国和欧洲的客户在 GitHub 上看到我的开源项目,特意找到我要求我定制产品,通过项目合作的方式,我才得以了解和熟悉。不过因为不对全球开发者,所以也无法推荐使用。 653 | 654 | 至于 MoPub,它的 SDK 的是在 GitHub 上开源的,这是它与众不同的地方。不过也正是因为这一点,其文档和 SDK 接入就要稍微麻烦一些。必须要把这些 SDK 从源代码编译成 jar 和 framework,然后才能在自己的项目中使用。 655 | 656 | Millennial Media(简写为 mMeida),其 SDK Demo 的美观度做得不错,不过客服和技术支持的响应实在不敢恭维。曾经碰到过技术问题,通过 Web Form 提交了问题,一直没有得到过答复,所以我后来也就懒得用它了。 657 | 658 | 另外像 Charboost、TapJoy 等等广告平台,也或多或少的接触过。不过精力有限,没有逐一进行具体的试用。Charboost 是 2011 年才创业的广告公司,只专注在移动游戏领域,2014年被 VentureBeat 指数报告定为 Top 10 的移动广告公司。通过 Chartboost 发布的广告,点击收益比较不错,不过反过来说,也就是广告投放、获取用户的成本是比较高的。我所认识的专门做重度游戏、专门投放海外市场的朋友,通过 Facebook 和 Chartboost 投放广告用得比较多。 659 | 660 | 上面介绍了不少移动广告平台,完全是个人经验和主观体会,有兴趣的可以自行尝试。 661 | 662 | ### 营销你的产品 663 | 664 | (待续) 665 | 666 | ### 联网版APP 667 | 668 | ### 云服务 669 | 670 | ### 高级篇 671 | 672 | ### 用户数据分析 673 | 674 | ### 广告优化 675 | 676 | ### 支付与内购 677 | 678 | ### 社交营销 679 | 680 | ### 广告投放 681 | 682 | ### 附录 683 | 684 | #### 互联网营销常用术语 685 | 686 | Part1 最基本的名词 687 | 688 | ROI:Return On Investment的简称。一般而言on这个词是应该小写的,所以ROI似乎应该是RoI,不过大家都约定俗成了,不必较真。ROI是典型的追求效果类的营销的关键指标。在中国的互联网营销,这个值一般指的是,我花了多少钱推广费,直接产生了多少的销售。比如花了1万元做SEM推广,直接卖了3万元的货。ROI会被认为做到了3(即3:1)。这一点与财务计算上的ROI是不同的,后者是利润和投入的比值,但在互联网营销上,大家没有把利润作为R,而是用GMV。关于GMV是什么,本文的下篇有。:) 689 | 690 | Impression:意思是“曝光”,也被称为“展示”或“显示”,是衡量广告被显示的次数,一个广告被显示了多少次,它就计数多少。比如,你打开新浪的一个页面,这上面的所有广告就被“显示”了1次,每个广告增加1个Impression。 691 | 692 | Click:点击,是指互联网用户点击某个广告的次数。 693 | 694 | CTR:Click Through Rate,点击率。就是用click除以impression的比例。 695 | 696 | CPM:Cost Per Mille,这次实际上省略了impression,全文应该是cost per mille impression。Mille是千的意思,在英语中它只跟着per一起用,即per mille,就是汉语的“每千……”的意思。所以CPM是每千次展示的成本。 697 | 698 | CPC:Cost Per Click,每次点击的成本。 699 | 700 | Ads:就是广告(名词)的英语复数啦。Ads = Advertisements。如果是“做广告”(动词),应该用Advertising。 701 | 702 | SEM:Search Engine Marketing的简称。就是搜索引擎营销。不过在中国,SEM其实仅仅指PPC。但是SEM事实上是PPC和SEO的统称。PPC和SEO是什么,下面有解释。 703 | 704 | PPC:Pay Per Click的简称。一般是特指搜索引擎的付费竞价排名广告推广形式,因为搜索引擎竞价排名只有一种收费方式,即按照点击付费。虽然也有其他广告形式也是按照点击数量来进行收费,一般不被称为PPC,而被称为CPC,即Cost Per Click。为什么?似乎是约定俗成。 705 | 706 | SEO:Search Engine Optimization的简称。就是搜索引擎优化,特别指搜索引擎搜索结果自然排名的优化。所谓自然排名,就是不通过给搜索引擎付钱就能获得的排名。不花钱就能被搜索引擎排到前面当然是好事,但大家(每个网站)都这么想,所以要出头还挺难的。懂得这个领域的高手过去能挣很多钱,但今天SEO却越来越短时间内就出效果,所以想要通过SEO挣快钱越来越难。 707 | 708 | Social:社会化,是social marketing(社会化营销)或者social media(社会化媒体)的简称,具体指二者的哪一个要看场合。社会化媒体,在中国过去是人人网、开心网之类,现在是微信、微博、图片分享类网站应用等。 709 | 710 | WA:Web Analytics的缩写。就是网站分析。 711 | 712 | DA:Digital Marketing Analytics的缩写。数字营销分析。 713 | 714 | Part2 数据分析领域 715 | 716 | Dimension:维度。维度是对一指一个事物的不同的方面、特征或者属性。这么说太抽象。简单说,人可以分成男人和女人,性别就是人的一种维度。或者汽车可以分为白色、黑色、红色等,颜色就是汽车的一种维度。维度是最基本的数据结构,任何一个度量(指标)必须要依附于一个具体的维度才有意义。比如说,我说visit=100,这没有任何意义。我说搜索引擎给我的网站带来的visit=100,就有了意义。搜索引擎流量就是维度(即流量来源)的具体的值(就如同男人是性别这个维度的具体的值)。 717 | 718 | Metric(常用作复数,即Metrics):通常翻译为度量或者指标,但是因为指标含义更宽泛,例如KPI或者benchmark都可能被称为指标,所以在我的培训中metrics都是用度量来表示,这样更严谨。度量绝大多数都能能用数字表示,比如汽车的速度,速度就是度量。课程中涉及到的度量分为两类,一类是计数度量(比如常见的PV、UV、访次、停留时间等)和复合度量(两个度量四则运算而成,常见的有转化率、跳出率、留存率、活跃率等)。另外有些度量使用布尔量表示,即是或非。度量必须依附于维度才有意义。 719 | 720 | Unique:Unique是指排重(排除重复)。Unique很少单独用,常用在计数类度量的前面,比如unique visitor,指排除对同一个访问者重复计数之后的访问者数量——同一个人今天到网站一次,明天又来一次,不能就因此变成两个人,unique visitor仍然是1。Unique visitor通常可以简化为visitor,两个可以通用。Unique visitor和unique user是唯一的两个可以加不加unique都算unique的度量。另一个例子是unique impression,即同一个人多次看同一个广告,还是计算为1次。Unique impression和impression是两个不同的度量,因为后者不排重。 721 | 722 | Benchmark:我在大学的时候这个词被翻译为“定标比超”,真是不明觉厉的感觉呀。Benchmark就是“可以作为对比的参照值”。我的很多客户会问,这个指标在行业中的平均情况是什么样呀?他们的问题可以同样表述为:这个指标在行业中的benchmark是多少? 723 | 724 | Pattern:指某种会重复出现的模式或规律。Pattern常常用于发现用户行为上的某些趋同特征。比如,我们发现用户都喜欢在晚上10点到11点打开某个app应用,这就是一种pattern。如果我说发现了一个pattern,很兴奋,实际上的意思就是说我发现了一个规律。规律这词,几十年前就有了,pattern这洋文多有逼格呢…… 725 | 726 | Random:随机数,或者随机性。但是老外们也用它来形容“混沌”之类的意思。 727 | 728 | Cohort:很难翻译,也很难形容,我暂且把它翻译成“队列”。跟Segmentation有点类似,但内涵要多一点,多点排队的意思。你懂的,课堂上讲清楚。Cohort一般是一种分析方法,所以一般不单独出来,而是跟analysis在一起,即cohort analysis。 729 | 730 | Filter:过滤。过滤是指摒弃掉不需要的数据,只留下需要的。过滤都需要遵循一定的规则(这是废话),而且过滤掉的数据往往不能找回。过滤是一种常用的定位某个细分领域的方法,与细分(segmentation)的区别在于,segmentation是把总体分成并列的若干块(segment),而Filter则只保留符合规则的块,而丢弃其他不符合规则的块。 731 | 732 | Segmentation:细分。这是我们最基本的方法,即把总体按照一定的规则分成并列的若干块。做了segmentation之后,每一个块就是一个segment。所以segmentation和segment不是同义词。Segmentation怎么用?怎么发挥最大价值?课堂上有很多案例。 733 | 734 | Part3 互联网和互联网营销分析技术领域 735 | 736 | Cookie:Cookie并没有真正的中文翻译,cookie是在你浏览网页的时候,网站服务器放在你电脑(或移动设备)的浏览器里面的一个小小的TXT文件。这个文件里面存储了一个标识你这个人的匿名的ID,以及一些与你访问的这个网站有关的一些东西,这样当你下一次访问这个网站的时候,cookie就会知道你又来了,并且记住你上次访问时候的一些状态或者设置。Cookie以及与cookie类似的东西是互联网营销的最重要技术之一,几乎所有识别人和标记人的工作都需要cookie及类cookie技术完成。在这次培训中会有详细的说明。 737 | 738 | Deep link:没有汉语直接对应名词,我觉得直接叫“深链”好了,但不能叫做“内链”,后者是另外一个东西。Deep link历史悠久,过去把能够链接到网站的内页(即非首页的页面)的链接都称为deep link,但此后很快deep link这个词的意义就消失了,因为这样的链接实在太普通,都不需要用一个专用的名词来表述。但随着移动端的app的出现,deep link又“东(si)山(hui)再(fu)起(ran)”,特指那些能够跨过app首屏而直接链接到app的内屏(类似于网站的内页)的链接。嗯?如果这个app还没有安装过怎么办?这两期的公开课会专门讲。 739 | 740 | Link Tag:Link Tag特指在流量源头的URL后面加上的标记,用来标明流量源头的名称和属性。最典型的link tag是Google Analytics的UTM格式的标记。目前已经成为标明paid media(花钱购买的广告流量)的标准配置。如何用好它,比你想的丰富,课堂上详解。 741 | 742 | Heat map:热图。在一个图上标明这个图上哪些是获得更多关注的部分。关注可以是眼光,也可以是鼠标点击或者手指的指指点点。热图是做行为统计学研究的好可视化工具。大家都看得懂的东西,但用好则要水平。 743 | 744 | JavaScript:简称JS,网站页面上的程序,能够让页面除了展示内容之外,还能实现更多的程序运行和功能。网站分析工具监测代码就是JS代码,将JS代码部署在你要监测的网页中,就可以把用户在页面上的互动访问行为不间断的发送到相应数据分析工具的服务器,从而获取想要的用户数据。 745 | 746 | Attribution:归因。但是实际上这个词被翻译成“归属”更好。归因是指在多种因素共同(或先后)作用造成的某一个结果时,各种因素应该占有造成该结果的多大的作用,即“功劳应该如何分配以及归属于谁”。为解决归因的问题而建立的模型被称为归因模型,即attribution modeling。但我一直可惜这个词没有翻译好,翻译成归属模型或许更容易理解。 747 | 748 | Path:路径。任何构成先后次序的一系列事件或行为都可以用路径来描述。路径分析(path analysis)也是较为常用的一种分析方法。 749 | 750 | UID:是User Identification的缩写,即用户ID。 751 | 752 | Bots:机器人。非人产生的流量,都被称为机器流量,即bots traffic。Bots是互联网虚假流量主要的创造者之一。 753 | 754 | Spider:常翻译为蜘蛛,蜘蛛是一个自动程序,它的作用是访问收集整理互联网上的网页、图片、视频等内容。比如百度蜘蛛会将互联网的各种内容抓取回来并分门别类建立索引数据库,使用户能在百度搜索引擎中搜索到想要的内容。 755 | 756 | IP:是Internet Protocol(网络互联协议)的缩写。IP地址就是给每个连接在互联网上的主机分配的一个地址,过去用于判断不同的访问行为属于同一个人(因为都是同一个IP记录产生的访问)。但由于各种动态IP和虚拟IP技术,用它判断用户人数已经很不可行。现在游戏领域也常常说起 IP,不过那是另外一个意思,intellectual property,知识产权,往往指的是著名的小说、影视、游戏等作品的人物故事等等。 757 | 758 | Tracking:翻译为跟踪,就是数据分析工具跟踪用户各种行为的“跟踪”,用户所有的线上行为都可以被跟踪。监测这个词的“监”这个字,就是tracking。而测,则是measurement。所以监测这个汉语词,最准确的翻译就是tracking and measurement。监测需要用一定的技术手段实现,其中核心技术之一就是监测代码(tracking code),是一串可以发挥监测功能的程序(很多都是脚本语言编写,比如JavaScript语言)。 759 | 760 | Pixel:本意是像素,但是在监测领域,是tracking code(监测代码)的同义词。 761 | 762 | VAST:即Digital Video Ad Serving Template。一种实现视频程序化广告的基础性协议。目前是4.0版本。 763 | 764 | Part4 流量与用户行为领域的名词 765 | 766 | Bounce Rate:跳出率。会在课堂上简单介绍。 767 | 768 | Referral:翻译为引荐来源。现实生活中,如果我推荐你使用了某个产品,或者我介绍你加入我们光荣的党,我就是引荐人(referral)。而在数字营销中,referral是指那些给我的网站带来了流量的其他网站,通常这些网站上会有链接到我的网站的链接。如果没有做特殊的标记(如使用link tag标记)或者不是特殊的流量源(比如搜索引擎),那么大部分的流量来源都会被监测工具记录为referral。 769 | 770 | Retention:指用户的留存。如何让用户能够留存,是一个重要的课题。在这两期公开课培训中会跟大家介绍如何提升retention。 771 | 772 | Engagement:没有特别合适的中文翻译,这个指标指的是用户在网站或APP上的交互程度或者参与度,可以由多个指标组合而成。比如一个网站有很多交互行为,包括下载文档、观看视频、咨询等,那么会根据每个交互的重要程度给每个交互行为赋值,用户每完成一个交互及赋予相应的数值,这样可以判断不同类别用户的交互程度以及不同页面的交互差异。Engagement和其他一些名词比如effectiveness、performance、acquisition等相似,都是泛指性的名词。 773 | 774 | Session:session实际上和visit是一回事。本来,各类工具都是将用户的一次访问(网站)称为visit,但是随着app的普及,visit app听起来很别扭(因为我们都是use app),所以app也就不存在visit了,于是就用session代替。为了统一表述visit和session,有些监测工具把visit改称session。 775 | 776 | Visit:即访问。指对用户对网站的访问,通常以30分钟为区隔。如果超过30分钟在网站上没啥动静,则一次访问结束。 777 | 778 | Direct:翻译为直接访问,比如用户直接在浏览器输入网址访问,或者用户直接点击收藏夹里的网址进行访问,都会被记为直接访问。除了上述情况,从QQ客户端聊天窗口或微信客户端的链接直接访问网站的也会被记为直接访问。 779 | 780 | Exit:退出,即用户离开网站或APP的行为,用户离开网站前的最后一个页面称为退出页(exit page),离开APP时所在的最后一个screen叫做exit screen。 781 | 782 | Part5 策略与运营 783 | 784 | Acquisition:泛指用户获取。在用户运营中使用的极为广泛,做任何产品的运营的第一步就是获取用户,比如在网页端的推广流量的获取、App推广中用户的下载等。 785 | 786 | Goal:目标,是想要达到某种效果,每个网站都会有一些作为目标的交互,比如点击下载说明书、登录、注册、提交订单等。那我们就可以将这些设定为目标,那么这里引出另一概念:转化(conversion)。每完成一次上述的目标,就可以认定为完成一次转化。 787 | 788 | KBR:Key Business Requirement。关键商业需求。是一个企业商业目标中最关键的。KBR决定了一个企业的其他目标,并且也决定了我们应该如何制定digital marketing的目标,以及针对这些目标选用什么样的指标或KPI。 789 | 790 | KPI:Key Performance Indicator的缩写,译为关键绩效指标,是若干个用于衡量业务表现的最重要的度量。不同的商业目标,不同的业务,所对应的KPI不同。如何设置KPI是一门技术,也是一门科学。在这次的培训中也会做详细介绍。 791 | 792 | Part6 互联网广告领域的名词 793 | 794 | Display Ads:展示广告。展示广告主要指静态的图片广告、动画广告,以及富媒体广告(就是能互动一下的flash神马的)。这一广告形式与文字广告(就是文字链)和视频贴片广告形式是并列的不同类广告形式。 795 | 796 | Banner:广义上是图片或者动画展示类广告的统称。这个词的含义源于上街游行队伍中拉着写有标语的大横幅,后来扩展到互联网广告商,并与display ads同义。 797 | 798 | Pre-roll:也叫pre-roll ads,即前贴片广告。就是视频播放之前的长达10秒到丧心病狂的120秒的视频广告。 799 | 800 | Content Feeds:信息流广告。信息流(主要是在社交网站和APP上)是内容并列排列自上而下像瀑布流一般,而在信息流中插入跟信息内容形态一样的广告,这种形式就是信息流广告。课堂上会介绍。 801 | 802 | Native Ads:原生广告,通俗说是那些看起来就像网站或者app中正常内容一样的广告。原生广告容易和信息流广告混为一谈,但它们并不是一回事。原生广告可以采用信息流来实现,但不仅仅局限于此。 803 | 804 | Reach:人群触达。如果做互联网广告,能够让广告触达到多少人是广告主关心的。触达实际上等同于unique impression,所以它不是动词,而是一个名词,一个用来记录广告触及到了多少人的计数度量。 805 | 806 | Coverage:人群覆盖。跟触达非常类似,只是它的含义更模糊一些。往往用百分比来表示,例如,希望reach到的人群是1个亿,而实际reach到的是6000万,那么coverage大约是60%。Coverage不是一个度量,而是一个约定俗成的说法。 807 | 808 | Viewability:广告可视性。过去统计广告的曝光的时候,不考虑广告是不是真的被人看到了,所以有些广告处在一个很长的页面的第二屏或者更后面的位置,而某个同学只看了第一屏就离开了的情况下,这个广告其实是根本没有处于屏幕中的,这个同学根本看不到这个广告。在不考虑viewability的情况下,这个广告仍然因此而有增加一次曝光(impression),而若考虑viewability,这个广告不增加一次曝光。 809 | 810 | Pre-click:点击前阶段。指流量入口(尤其是广告)在被用户点击之前(含点击本身)的相关用户行为及对应的营销监测与分析体系。 811 | 812 | Post-click:点击后阶段。指流量入口在被用户点击之后的相关用户行为即对应的营销监测与分析体系。 813 | 814 | Fraud:作弊,也有更通俗的写法即cheating,但fraud特别指流量作弊。反作弊是anti-fraud。另一个与fraud类似的反面词汇是spam,即垃圾短信、垃圾邮件之类的骚扰垃圾信息。 815 | 816 | Campaign:特别难找到准确对应的汉语名词,大意是一次有始有终的营销活动。有始,是指营销活动是从严谨的策划和详细的执行计划开始的,有终,是指营销活动有清晰的执行结束的节点。所以心血来潮的营销“游击战”不能称为campaign,那些几乎永远不停止的营销行为(例如SEM投放)也不能称为campaign。 817 | 818 | Audience:受众。就是广告的阅览者,普罗大众。受众这个词太书面化了,但是确实没有比这个更明确的词,所以在这两期公开课中都会用这个词。 819 | 820 | Target Audience:目标受众。任何人都可能看到你的广告,但只有那些合适的人才会购买你的商品。所以,合适的人就是你的目标受众,是你最希望影响到的那群人。 821 | 822 | Effectiveness:效果。这是广告主评估品牌推广类广告好坏的一个关键指标。效果的含义比较广泛,在不同的campaign目标下可能不尽相同。比如,能够覆盖到的人群情况(coverage)可以作为一种效果;或者,人们是否真正对你的品牌产生了认知(awareness)也被称为一种效果。类似的,人们也用performance来表示营销的好坏,二者是近义词,但又不完全相同。Performance更偏重有实际产出的具体效果,因此常常被翻译为“绩效”,例如campaign产生了多少的click,产生了多少的交易等等。因此,effectiveness较为抽象,几乎只在品牌推广中被提起,而performance较为具体,在效果类推广中更为常见。 823 | 824 | Efficiency:效率,即达到某种效果所花费的成本(包括金钱与时间)。品牌推广类营销常用,效果推广类很少提及。 825 | 826 | Branding:品牌推广。 827 | 828 | Awareness:对品牌或产品的认知。做广告的首要目的,就是让消费者意识到你的品牌或者商品的存在,说白了就是搏存在感。看看近期密集发布的手机在各个新闻app、电商app中频频发力,就知道awareness对广告主有多重要了。 829 | 830 | Buzz:消费者或网民对于品牌、产品等广告主在乎的事情在网上发出的各种声音。与IWOM是一个意思。Buzz是苍蝇蜜蜂之类的嗡嗡声,无数网民每天在网上发出的各种意见, 在上帝看来就像苍蝇蜜蜂般嗡嗡作响。 831 | 832 | IWOM:Internet Word of Mouth的简称。即网络口碑。 833 | 834 | Survey:调研。这个词是一个有意思的词,主要在它的发音。作名词的时候重音在前——[?s??ve?],作动词的时候重音在后——[s??ve?]。 835 | 836 | ePR:通过互联网进行的PR。 837 | 838 | IP:Intellectual Property,即知识产权。就是过去说的那些原创的,有知识产权的东西。现在天天出现在各种口语和报道中的这个词指各种在互联网上创作的内容。例如,我的这个公开课也可以称得上是IP。Papi酱的网红视频?当然也是咯!与上篇的IP写法一样,意义完全不同。 839 | 840 | Minisite/Microsite:没有对应的汉语名词,而且大家也从来不用汉语描述它。就是指为campaign专门定制的campaign网站,这些网站规模都不大,所以被称为mini(迷你)或者micro(微)。 841 | 842 | Programmatic:程序化(广告)。一种革命性的广告运作方式。在课堂中会有详细的介绍。 843 | 844 | DSP:Demand Side Platform(需求方平台)。程序化广告的广告投放管理系统平台以及相应的服务提供方。具体解释这里不多说了,到时候课堂上会详细介绍。 845 | 846 | SSP:Supply Side Platform(供应方平台)。程序化广告的广告资源管理系统平台以及相应的服务提供方。具体课上介绍。 847 | 848 | RTB:Real Time Bidding(实时竞价广告),这是程序化广告最重要的一种方式,也是理论上最佳的广告资源变现方案。但具体如何实现,优劣问题,以及国内的情况,课上详细讲。 849 | 850 | Bid/Bidding:竞价。搜索引擎PPC广告,或者RTB广告,都需要竞价。类似于拍卖,但需要在预置条件的前提下通过程序来实现。课堂上详细说。 851 | 852 | Bidder:Bidder即竞价者,在PPC广告范畴内,bidder就是普通SEM的操作从业者。在程序化广告范畴内,bidder一般就是DSP服务提供商。 853 | 854 | DMP:Data Management Platform,数据管理平台。程序化广告(programmatic advertising)中为实现定向受众所需要倚仗的数据平台。但它能做的还远远不止这么多。培训课程中会专门涉及。 855 | 856 | Verification:特指广告的验证。验证有两类,一类是验证广告是否真实被投放出去了,以及投放出去之后广告所处的环境是什么。什么是广告所处的环境?——对于PC web上的广告而言,环境就是这个网站以及具体承载广告的这个页面。另一类是验证广告覆盖的人群的情况是不是跟预想的一样。 857 | 858 | Part7 效果营销领域的名词 859 | 860 | Conversion Rate:转化率。是指从流量到实际销售转化的能力。与ROI本质是一样的。只是ROI衡量的是现金(收入)对现金(支出)的对比,而转化率衡量的是销售的数量与进入销售漏斗的人数(或者次数)的比例关系。 861 | 862 | Churn和Churn Rate:客户流失和客户流失率。所有需要尽可能让用户反复购买(或付费)的生意,都有这个度量。看名字就知道,这个度量用来描述失去客户的情况。具体如何定义,以及如何分析,在课堂上会有详细说明。 863 | 864 | SERP:Search Engine Result Page。就是搜索引擎的搜索结果页面。 865 | 866 | Search Query:用户的搜索词。人们在各种搜索框(典型的如搜索引擎的搜索框)内填入的词,这些词可能很不结构化,且非常随意。而keyword,则是使用搜索引擎竞价排名的广告主设定的关键词。 867 | 868 | Keyword:使用搜索引擎竞价排名的广告主设定的关键词,较为结构化,较规范。这些词不可能穷尽用户的search queries,因此搜索引擎会把用户的search queries转变为与之最相近(不过是否真的是最相近,那就只有搜索引擎知道了)的keywords,然后显示搜索的结果。 869 | 870 | Organic Search:自然搜索流量源,即用户点击了自然搜索结果产生的流量,而不是点击了竞价排名(PPC)而产生的流量。 871 | 872 | Affiliate Marketing:有时也就直接简称为Affiliate。这个词在国内没有对应的名词,在台湾被译作“联署营销”,但是这个翻译似乎仍然莫名其妙。Affiliate marketing就是典型的代销模式——你的东西,我帮你卖,卖出多少,你给我按照一定比例提成。在互联网上,affiliate marketing变成了我帮你引流量,我给你的流量如果有转化了,你给我提成。国内的亿起发、领克特等就是做affiliate marketing的专门平台。 873 | 874 | EDM:Email Direct Marketing(电子直邮营销)的缩写,是利用电子邮件(Email)与受众进行商业交流的一种营销方式,电子邮件营销是网络营销手法中最古老的一种。 875 | 876 | Performance:绩效,即通过营销之后获得“战果”。ROI就是一种典型的performance,销售额之类的也是。 877 | 878 | GMV:Gross Merchandise Volume。这是电商经常会用到的词,书面是“毛销售量”,实际就是销售流水。当然,销售流水不等于最后赚到的钱。GMV=1销售额+2取消订单金额+3拒收订单金额+4退货订单金额。GMV是流水,只要你下了订单,生成订单号,就算了GMV。而这个订单转化为平台的实际收入还会有2、3、4这些流失量。下单以后后悔了取消订单,订单送到你面前了后悔了拒收订单,签收订单以后后悔了要退货(这个步骤不同的电商平台计算方法不一样,有的平台是不管退不退货都搜算进销售额中)。总之,人艰不拆,GMV数字大,好看,而且我们监测起来也最容易,所以这是最常用的。 879 | 880 | AOV:Average Order Value。平均订单价格。 881 | 882 | Monetization:变现。 883 | 884 | MRR:Monthly Reoccurring Revenue,直译是每月都会产生的收入,实际就是用户要交的月费。比如我办了一个158元的包月电话套餐,对于电信公司而言,我就给他们贡献了MRR 158元。 885 | 886 | Part8 移动端常用的 887 | 888 | Screen:如果说web端用page view来记录页面被浏览的次数,那么screen就是app的页面,screen view就是app的页面浏览的次数。但因为screen没有page这个东西,所以就用screen来表示。我也不知道应该对应什么汉语名词,或者应该用“屏显”?反正相信你懂的。。 889 | 890 | DAU:Daily Active User(日活跃用户数量)的缩写,通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),是用来衡量产品的用户粘性的重要指标。 891 | 892 | MAU:Monthly Active User(月活跃用户数量)的缩写,概念与DAU相仿,区别在于时间跨度。MAU除了能衡量用户粘性,还可以分析产品衰退周期。 893 | 894 | H5:是HTML5的简称。它实现的功能与Flash类似(用于实现动画和各种酷炫的人机交互界面等),但是比Flash具有更强的兼容性,可扩展性,稳定性以及安全性,因为该技术是HTML的延展,而非如同Flash一样是一个单独创立出来的事物。目前各大互联网钜子们——包括Adobe(Flash的所有者)——都已经加入支持H5,H5在移动端几乎已经完全取代了Flash。 895 | 896 | ASO:App Store Optimization。狭义上指针对苹果应用商店的app排名所做的优化工作。广义则指对所有的应用市场的优化。与SEO类似,都是排名优化,只是优化的对象变成了应用市场。 897 | 898 | LBS:Location Based Service,基于位置的服务。低逼格的讲就是用手机定位之后,能否关联一些服务或广告的。当然实际的应用比我说的肯定逼格高很多。 899 | 900 | Part9 企业、组织机构与产品 901 | 902 | Google Analytics:谷歌分析,简称GA,是全球用户量最大的网站和APP上流量用户行为的监测与分析工具。 903 | 904 | Universal Analytics:简称UA,是GA在2013年左右做的一次大升级版本,目前无论是免费还是付费版的GA,都是基于Universal Analytics的。GA的付费版叫Google Analytics Premium,简称GAP。 905 | 906 | GTM:Google Tag Manager,是谷歌公司用于管理网页上各种广告、监测和分析代码的平台型工具。课堂上会简单介绍。 907 | 908 | DCM:DoubleClick Campaign Manager的简称 (即新版 DoubleClick for Advertisers 7),DCM 是一个管理及投放广告的全面解决方案,覆盖从 广告策划、管理、定位、投放、优化到生成报告等。广告的impression和click等几乎所有的度量,都可以通过它来进行监测。 909 | 910 | AdWords:全称Google Adwords,是谷歌搜索引擎的关键词竞价系统,按点击收费(CPC)。 911 | 912 | AdSense:全称Google Adsense,是谷歌推出的针对网站主(简称发布商)联盟的一个互联网广告服务,通过程序来分析网站的内容,并且投放与网站内容相关的广告。 913 | 914 | DAA:Digital Analytics Association,数据分析协会。美国的互联网营销数据分析行业协会,号称是全球协会,但主要章程和成员都在美国,对其他国家的影响力较小。 915 | 916 | IAB:Interactive Advertising Bureau,美国的互动广告局,也是类似于DAA的行业协会,主要领域是数字广告。这个协会在美国,但对全球数字广告的影响力巨大,尤其是标准和技术上。 917 | 918 | #### 如何发布 APP 到 Apple AppStore 919 | 920 | #### 如何发布 APP 到 Google Play Store 921 | 922 | #### 如何发布 APP 到 360 应用商店 923 | 924 | #### 如何用 Google Analytics 做用户数据分析 925 | 926 | 927 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # From Coding to Monetization:Programmer's Financial Freedom Approach 2 | 3 | 【从编码到变现:程序员财务自由之路】 4 | 5 | [中文版本/Chinese Version](./README.zh.md) 6 | 7 | ![rich](demo/richman.jpg) 8 | 9 | ## Content 10 | 11 | * [Foreword](#Foreword) 12 | * [Positioning](#Positioning) 13 | * [Getting Started](#Getting-Started) 14 | * [Language and Tools](#Language-and-Tools) 15 | * [Hello, World!](#hello-world) 16 | * [Simple APP](#simple-APP) 17 | * [Add Ad Banner](#add-ad-banner) 18 | * [Register Ad Account](#register-ad-account) 19 | * [Settings for Payment](#settings-for-payment) 20 | * [Publish APP](#publish-app) 21 | * [Calcuate Ad Revenue](#calculate-ad-revenue) 22 | * [Advanced](#advanced) 23 | * [Demand is Fundamental](#demand-is-foundamental) 24 | * [User Experience](#user-experience) 25 | * [What Ad is Best](#what-ad-is-best) 26 | * [Which Ad Network Shall I Choose](#which-ad-netowrk-shall-i-choose) 27 | * [Promote Your APP](#promote-your-app) 28 | * [Online APP](#online-app) 29 | * [Cloud Service](#cloud-service) 30 | * [Expert](#exert) 31 | * [Data Analysis](#data-analysis) 32 | * [Ad Optimization](#ad-optimization) 33 | * [In-App Purchase](#in-app-purchase) 34 | * [Social Marketing](#social-marketing) 35 | * [Advertising](#advertising) 36 | * [Appendix](#appendix) 37 | * [Internet Marketing Terminology](#internet-marketing-terminology) 38 | * [How to Publish APP to Apple AppStore](#how-to-publish-app-to-app-store) 39 | * [How to Publish APP to Google Play Store](#how-to-publish-app-to-google-play-store) 40 | * [How to Google Analytics for Data Analysis](#how-to-use-google-analytics-for-data-analysis) 41 | 42 | ### Forword 43 | 44 | This book, is written for programmer. 45 | 46 | It's not about a programming language, not about a design pattern, and not about how to estimate man-hour, or how to manage project. 47 | 48 | This book is about: monetization. Simply speaking, how to earn money. 49 | 50 | As a programmer, you must have spent much time to learn, mastered several programming lanugages, used dozens of developing tools. In order to design stable and flexible architecture, you may have learned various design patterns. In order to boost working efficiency, you may have used many mature frameworks and automation testing tools. In short, you become an excellent programmer. 51 | 52 | And, you may even accumulate experience in management, take the initiative to learn the theoretical knowledge of project management, mastered a variety of R&D organizating model, become the R&D team leader or manager. 53 | 54 | In most cases, as a programmer or R&D team, you work on requirements analysis, architecture design, module demarcation, interface design, coding implementation, testing, and release versions, as required by the project manager or product manager. These tasks, no doubt, are the most familiar routine work for programmers. 55 | 56 | Unfortunately, for most programmers, your everyday concerns are just development. Accept requirements, deliver versions, that's all the product manager or the client has you to do. Even many excellent programmers or technical guru, they seldom care how software brings revenue directly. Most developers, just focus on R&D technical work, or even just focus on coding work, which is very limited. 57 | 58 | In fact, R&D, plus sales, payment, promotion, customer support, and maintenance, is the complete closed-loop of software's value chain. 59 | 60 | This book is about how to start from coding, to get paid, and how to get users. Step by step, on every details. 61 | 62 | Once you have mastered how to monetize from your software, youo will be more concerned with user feedback, caring about market needs, and the quality of your products. As they will bring you better financial returns. Then it's not far away to achieve financial freedom. 63 | 64 | If you feel that the content of this book is helpful, please give you support, by staring it. 65 | 66 | ### Positioning 67 | 68 | Since it is to talk about earning money, we will not discuss the hard way of outsourcing, in which the business model is to sell limited life time as money. 69 | 70 | Considering factor of limited man power, time and resource, we will not discuss carrier-class, or enterprise-class large-scale systems. As they require large investment and long research cycle for complex requirement, which is beyond congrol of individuals and small teams. 71 | 72 | We focus on individuals or small teams. In the era of mobile internet, we have heard many miracle stories about individuals or small teams earn lots of money or even grow fast to unicorn enterprise. 73 | 74 | Real story 1: 75 | [Flappy Bird](https://zh.wikipedia.org/wiki/Flappy_Bird) legend, a small mobile game developed by a Vietnam programmer in 2-3 days, swept the globe in just a few weeks, and bring income of $50,000 US dollors each day. This is undoutedly by chance, lucky guy, but at least, there is a probability of occurrence. 76 | 77 | Real story 2: 78 | I know a Polish programmer, who uses the web page technology to make an uncomplicated calculator APP, doing something like calculating tip or percentage. The APP stays in the financial apps top list of App store in several Eroupe countries, made a lot of money. 79 | 80 | Real story 3: 81 | Around 2010, I worked for a company that developed insurance software. The company has developed quite well. It was founded in 2000 and has grown to a scale of 1,000 people after 10 years. The management tried to go public. However, it was not smooth, and after many years, it has not yet been able to IPO. I personally think that it is a business model problem. There are too many customized developments around the needs of large insurance company customers. This is too close to the outsourcing model, not the product model or the platform model, and it is difficult to scale expansion. 82 | 83 | When I worked in this company, I had two colleagues Yang Luyu and Zhu Jun. They left the company in 2014 and established a start-up company to develop a short video app on mobile phones and become a short video community platform. The team was only 6 people, but they have developed a small product that has brought explosive growth. After 3 years of innovation and hard work, in 2017, they were acquired by Bytedance for $1 billion. 84 | 85 | The initial name of the APP was Musical.ly. You may not be familiar with it, but you must know its later very famous name, Tiktok. Yes, it is the app that surpasses Facebook and often ranks first in the app store. Its influence in the world is so great that even Trump threatened for sanctions. 86 | 87 | You can find other similar success stories, about making good money from mobile apps or games. You may heard, or just google the internet. 88 | 89 | In this book, what we want to explore, is to make full use of limited time and resource, focus on a very narrow area of requirement, to develop a very unique mobile app or small game, publish to global app store, acquire users, and make money. 90 | 91 | Perhaps, you are a technical guru, who masetered dozens of programming languages, design patterns, front-end to back-end full stack development capabilies. However, not every technology can be used to make quick money. The hardest or most intersting technology, may not be the easiest technology to make money. Sometimes, we need most flexible and scalabe architecture. Sometimes, we have to choose the most rapid development methods. 92 | 93 | Maybe, you are a newbie, just getting started, and only know how to write a webpage. It does not matter. The programming skills required to make money, can also be very simple. Just one thing, if any knowledge is required, we have to learn it quickly. We are in a era of fast changing world, programmers must be good at learning new things. 94 | 95 | ## Getting Started 96 | 97 | ### Language and Tools 98 | 99 | The language and tools for developing apps are often tied to the platform. 100 | * If it is iOS, it is usually Objective C, and the development tools are [Xcode](https://developer.apple.com/xcode/) from Apple (development tools only run on Mac) toolset. 101 | * If it's Android, it's usually Java, and development tools are Google's [Android Studio](http://developer.android.com/tools/studio/index.html) (a cross-platform development tool) toolset. 102 | * If it is Windows Phone, that is C #, the development tool is Microsoft's [Visual Studio](https://www.visualstudio.com/en-us/visual-studio-homepage-vs.aspx) toolset (only run On Windows)。 103 | 104 | In addition, there are some cross-platform languages and tools, more friendly to developers. Develope once, package and release on multiple platforms: 105 | * HTML5, can be used to develop apps and games, javascript is the core language. 106 | * [Cocos2d-X](http://www.cocos2d-x.org/) for game development, C++ is the core language. 107 | * [Unity3D](http://unity3d.com/) IDE and integrated MonoDevelop, C# is the core language. 108 | * [Xamarin](https://www.xamarin.com/) acquired by Microsoft, and its sponsored open source project [Mono](http://www.mono-project.com/), used to develop APP, C# is the core language. 109 | 110 | In the following tutorials, we choose the simplest javascript as the main development language for the follow-up introduction. 111 | 112 | Notice: 113 | Don't have a stereotype about javascript and think that it is just a simple script program for making web pages. 114 | 115 | In fact, it is an extremely versatile language for programming and the most active language on github. It can be used to develop: 116 | * Web pages running in the browser; 117 | * Single-page WebApp running and embedded browser; 118 | * Command line tools based on [nodejs](https://nodejs.org/), such as Cordova CLI command line tools; 119 | * Network cloud services based on nodejs, such as Amazon's Bluestacks cloud service; 120 | * Based on [cordova](http://cordova.apache.org/) technology, hybrid APP. 121 | * Based on [react-native](http://www.reactnative.com/) to develop apps with native UI experience. 122 | * Even, you can use [Electron](https://www.electronjs.org/) to develop desktop applications, such as Atom, Visual Studio Code code editor. 123 | 124 | Because javascript can be used to develop front-end and back-end at the same time, code logic can also be used for front-end and back-end reuse, thereby reducing skill thresholds and development costs. The development environment required for getting started is also very low, as long as there is a friendly code editor and a browser for running and debugging. 125 | 126 | The following are the environment and tools needed for development with javascript: 127 | * Chrome browser, comes with developer tools and javascript console for running and debugging. 128 | * [Adobe Brackets](http://brackets.io/) text editor (if you are used to [Sublime Text](http://www.sublimetext.com/) or [Atom](https://atom.io /) Or [Visual Studio Code](http://code.visualstudio.com/), no problem) 129 | * iMac desktop, huge 27-inch screen, unrestricted view; Mac OS X command line is very powerful and convenient, through [MacPorts](https://www.macports.org/) or [Homebrew](http:// brew.sh/), command line tools or libraries on Linux basically support it. 130 | * Xcode (Mac version only), to debug the iOS APP, an iMac computer or MacBook laptop is also necessary. 131 | * Android Studio, used to debug Android APP. 132 | 133 | If you are used to Windows and don't have a Mac, it will be a little troublesome. Although there are also methods, there are some cloud services that provide compilation and packaging, but these services are often due to commercial interests and will adjust their strategies to terminate the services. 134 | For example: 135 | * Adobe PhoneGap Build 136 | Out-dated. Since 2020.10.1, Adobe has stopped serving the cloud build service. 137 | * Intel XDK 138 | Out-dated. XDK has been re-used by Intel for IoT development, and core mobile development functions have been deprecated by Intel and are no longer supported. The accompanying cross-platform Cordova cloud construction service has been offline. It is not recommended to use XDK for new mobile/tablet application development projects. 139 | * [Ionic AppLow](https://ionic.io/appflow) 140 | Appflow is the continuous integration (CI) and continuous deployment (CD) platform of the Ionic development team. It claims that Ionic Appflow can deploy builds to destinations, such as the Apple App Store and Google Play Store, completely in the cloud. 141 | 142 | But, a Mac is still recommended, for both Android and iOS development. 143 | 144 | ### Hello, World! 145 | 146 | To development frond-end app with javascript, in fact, there are three closely related languages: HTML / javascript / CSS. 147 | * HTML is responsible for the content. 148 | * javascript is responsible for logic. 149 | * CSS is responsible for rendering. 150 | 151 | Here is a simple example: 152 | ```html 153 | 154 | 155 | 156 | 157 | 158 | Hello 159 | 160 | 161 | 162 | 163 |

Hello, World!

164 | 165 | 166 | ``` 167 | ```javascript 168 | // main.js 169 | console.log('hello, world!'); 170 | ``` 171 | ```css 172 | /* main.css */ 173 | body { 174 | width: 100%; 175 | height: 100%; 176 | padding: 0px; 177 | margin: 0px; 178 | } 179 | h1 { 180 | color: blue; 181 | padding: 40px; 182 | margin: 10px; 183 | border: 1px solid gray; 184 | display: inline-block; 185 | } 186 | ``` 187 | 188 | Open it with Chrome and we see the following display: 189 | * The main browser window above shows the contents of the HTML and is rendered in the format and effect specified by the CSS. 190 | * Open the Chrome console window, it shows the javascript call console.log () output debugging information. 191 | 192 | ![HelloWorld](demo/helloworld.png) 193 | 194 | Using HTML5 / javascript to do development, getting started is as simple as that. 195 | 196 | If you need to develop high-quality apps, you need to master HTML / CSS and javascript, especially HTML5 / CSS3, master HTML DOM and some javascript libraries, such as [jQuery](https://jquery.com/), etc. Here are some free tutorials for getting started: 197 | * [HTML series tutorial](http://www.w3school.com.cn/h.asp) 198 | * [JavaScript Tutorial](http://www.w3school.com.cn/js/index.asp) 199 | * [JavaScript Advanced Tutorial](http://www.w3school.com.cn/js/index_pro.asp) 200 | 201 | Through these tutorials, you can learn: 202 | * A simple index.html page; 203 | * A unified main.css file that controls and adjusts the presentation of interface elements 204 | * A set of javascript files that enable dynamic presentation and switching of content through access to the HTML DOM. 205 | 206 | For you, as a programmer, this is not hard at all. 207 | 208 | ### Simple APP 209 | 210 | Next, we want to turn such a simple web app into a mobile app. To be exact, it should be called Hybrid APP, a hybrid program. Because it's native app, it wraps a webview, which runs the web app we wrote. 211 | 212 | We need to use a technical framework called Cordova. 213 | 214 | Originally a product developed by a small team acquired by Adobe, it was renamed [PhoneGap](http://phonegap.com/). Adobe later turned it open source and donated it to the Apache Foundation, then called [Apache Cordova](https://cordova.apache.org/). 215 | 216 | Now Cordova has become a very popular technical framework, but also sought after by many commercial companies, in addition to Adobe, Intel, Microsoft, IBM and other companies have also introduced support Cordova products. 217 | 218 | The Cordova technology framework provides a command-line tool developed using nodejs, as well as a variety of plug-ins. 219 | 220 | We first have to install [nodejs](https://nodejs.org/en/), after installation, it will provide two basic commands: 221 | ```bash 222 | $ which node 223 | /usr/local/bin/node 224 | $ node -v 225 | v4.8.4 226 | $ npm -v 227 | 2.15.11 228 | ``` 229 | 230 | * node --- the javascript engine, compile / interpret / execute. It is based on Google's open source Chrome V8 engine, event-driven, non-blocking IO mode operation, lightweight and efficient. 231 | * npm --- NodeJs Package Manager, install package manager. All nodejs packages are downloaded and installed using npm (you can also use it to publish your own packages to the npm repository) 232 | 233 | Next, use npm to install [cordova](https://cordova.apache.org/): 234 | ```bash 235 | $ npm install -g cordova 236 | $ which cordova 237 | /usr/local/bin/cordova 238 | $ cordova -v 239 | 7.1.0 240 | ``` 241 | 242 | Create a project with Cordova CLI: 243 | ```bash 244 | # Syntax:cordova create 245 | $ cordova create temp com.rjfun.demo Demo 246 | ``` 247 | 248 | Compile and build, then run the app in iOS emulator: 249 | ```bash 250 | $ cd temp 251 | $ cordova platform add ios 252 | $ cordova build ios 253 | $ cordova emulate ios 254 | ``` 255 | 256 | Now we will see the iOS emulator is started, and APP launched: 257 | 258 | ![Cordova iOS](demo/cordovaios.png) 259 | 260 | Or, you can also connect your iPhone device to Mac, the use following command to install and launch the APP: 261 | ```bash 262 | $ cordova run ios --device 263 | ``` 264 | 265 | Now the running one is Cordova's Demo project. Open Cordova project, you can see this directory structure: 266 | 267 | ![Cordova Proj](demo/cordovaproj.png) 268 | 269 | Next, delete the contents of the www directory, replace with the index.html, main.js, main.css we wrote earlier and make a few changes: 270 | ```html 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | Hello 287 | 288 | 289 | 290 | 291 |

Hello, World!

292 | 293 | 294 | ``` 295 | 296 | ```javascript 297 | // main.js 298 | console.log('hello, world!'); 299 | 300 | // When the app is initialized, the 'deviceready' event is fired and we can call the cordova framework and the APIs and functionality provided by the plug-in 301 | document.addEventListener('deviceready', function(){ 302 | console.log('deviceready'); 303 | 304 | // TODO: Start the business logic of our web app 305 | }); 306 | ``` 307 | 308 | ```css 309 | /* main.css */ 310 | body { 311 | width: 100%; 312 | height: 100%; 313 | padding: 0px; 314 | margin: 0px; 315 | background-color: silver; 316 | } 317 | h1 { 318 | padding: 40px; 319 | margin: 30px; 320 | background-color: yellow; 321 | color: blue; 322 | border: 1px solid gray; 323 | display: inline-block; 324 | } 325 | ``` 326 | 327 | Rerun the cordova project (it will compile, install, run automatically): 328 | ```bash 329 | $ cordova emulate ios 330 | ``` 331 | 332 | So, you can see that Web App is running in the iOS simulator: 333 | 334 | ![Hello World Cordova](demo/helloworldcordova.png) 335 | 336 | To write an easiest APP, in fact, is really simple, isn't it? 337 | 338 | ### Add Ad Banner 339 | 340 | As a programmer, we have no doubt that you have mastered the HTML / CSS and javascript programming capabilities to provide some interesting and useful features. 341 | 342 | Next, we want to add monetization to the app, which is to make real money. 343 | 344 | The easiest way to realize is to add an ad banner, such as Google's AdMob. 345 | * By showing ads, users click on interesting ads, browse the product, or install other apps. 346 | * Advertisers / advertisers (advertisers, Advertizer) pay advertising costs to Google. 347 | * Google will pay a portion of it to the person / company (publisher, publisher) who posted the ad. 348 | * Google's role in it is called the Ad Platform, or Ad Network. 349 | 350 | The technical architecture of the Cordova framework is a web app with some common plug-ins that provide access to specific functions of the handset and integration with third-party systems. 351 | 352 | We implemented integration with Google AdMob via the plug-in cordova-plugin-admobpro. This is a plug-in based on the Google AdMob SDK, and is the most popular and easiest to use plug-in for the moment. Through it, just a line of javascript code to complete the SDK API call. 353 | 354 | Now let's add plugins to the cordova project. 355 | 356 | ```bash 357 | $ cordova plugin add cordova-plugin-admobpro 358 | ``` 359 | 360 | Modify main.js, let's add a few lines into the initialization: 361 | 362 | ```javascript 363 | // main.js 364 | console.log('hello, world!'); 365 | 366 | // When the app is initialized, the 'deviceready' event is fired and we can call the cordova framework and the APIs and functionality provided by the plug-in 367 | document.addEventListener('deviceready', function(){ 368 | console.log('deviceready'); 369 | 370 | // When the app is initialized, create an ad banner below the screen 371 | if(AdMob) AdMob.createBanner({ 372 | adId: 'ca-app-pub-6869992474017983/4806197152', // need to register as a user on the AdMob website and create an Ad Unit Id 373 | position: AdMob.AD_POSITION.BOTTOM_CENTER, // show at bottom / center 374 | overlap: false, // no overlap the web app content 375 | isTesting: true, // show testing ad, please remove this line when formal release 376 | autoShow: true // auto show it when ad resource downloaded and ready 377 | }); 378 | }); 379 | ``` 380 | 381 | Rerun the cordova project (it will compile, install, run automatically): 382 | ```bash 383 | $ cordova emulate ios 384 | ``` 385 | 386 | So, you can see that Web App is running in the iOS simulator: 387 | 388 | ![AdMob Banner](demo/admobbanner.png) 389 | 390 | Look, at the bottom of the screen, the banner is displayed. 391 | 392 | This is just a test advertisement for debugging purposes only. 393 | 394 | We need to register the user on [AdMob official website] (https://apps.admob.com/) and create an Ad Unit Id that replaces the string of digits following adId in the code. And in the official version of the release, remove the `isTesting: true` line of code. 395 | 396 | ### Register Ad Account 397 | 398 | Here we introduce, how to register account, how to create ad unit, how to set bank receipt information. 399 | 400 | Visit Google's AdMob website (https://www.google.com/admob/) to sign up for a new account. 401 | 402 | ![AdMob Site](demo/admobsite.png) 403 | 404 | After registering, visit the AdMob website (https://apps.admob.com/), click on the menu "monetization", click on the red button in the upper left corner "+ monetize new application" to add a new APP: 405 | 406 | ![AdMob New App](demo/admobnewapp.png) 407 | 408 | Then create banner ads: 409 | 410 | ![AdMob New Banner](demo/admobnewbanner.png) 411 | 412 | You can get the ad unit ID, copy it to the source code: 413 | 414 | ![AdMob Ad Unit ID](demo/admobadunitid.png) 415 | 416 | ### Set Payment Info 417 | 418 | After registering your account, you can accumulate ad revenue by putting the ad unit into the APP for user actual usage. 419 | 420 | There are two more steps to complete the Google advertising payment you receive: 421 | * Verify address. Google will generate a PIN code printed on the card, send to your mailing address. 422 | * Set up payment information. Can be Western Union or bank account. 423 | 424 | However, newly registered account has no access to set bank information. Only your cumulative advertising revenue reached the basic threshold (currently 10 US dollars), Google will allow you to set up payment information. Through this method, Google can filter out a large number of non-active accounts. 425 | 426 | #### Verify PIN Code 427 | 428 | ![Verify PIN](demo/verifypin.png) 429 | 430 | Click "Fix It", enter PIN input UI. 431 | 432 | ![Verify PIN](demo/verifypin2.png) 433 | 434 | This process of verifying your PIN is slow and typically takes 2-4 weeks. 435 | 436 | So, if the date of the most recent PIN was displayed, wait patiently. After receiving the PIN code, it will be entered in the box above, submitted for verification. 437 | 438 | #### Set Payment Info 439 | 440 | ![AdMob Payment](demo/admobpay1.png) 441 | 442 | ![AdMob Payment](demo/admobpay2.png) 443 | 444 | ![AdMob Payment](demo/admobpay3.png) 445 | 446 | After the two steps are set up, when the advertising revenue, Google will calculate the advertising revenue of the month at the end of each month, and pay you around the 20th of next month. 447 | 448 | ### Publish APP 449 | 450 | The APP we developed, to be installed by user and generate revenue, needs an important part: released to the app store. 451 | * If Android APP, usually Google Play Store. 452 | * If iOS APP, released to Apple AppStore. 453 | 454 | Here we use the Apple AppStore as an example, to illustrate how to register a developer account and publish an app. 455 | 456 | Visit the Apple Developers Web site (https://developer.apple.com/) and sign up for login. To release an app on the Apple AppStore, you pay an annual fee of $ 99 a year, which is the same for individual developers and corporate developers. 457 | 458 | ![Apple Developer](demo/appledev.png) 459 | 460 | The following steps are needed to publish APP to the AppStore: 461 | * Generate developer digital certificate for installation package signature. 462 | * Create an APP ID for your APP, or use "*" or "com.rjfun. *" As a generic APP ID for more than one app, if no in-app purchase. 463 | * Generate Provisioning Profiles for your APP, download it locally, open it in Xcode, and manage it. 464 | 465 | Then use Xcode to open the XXX.xcodeproj project file in the Cordova project, compile and archive (Archive). Successfully archived APP packages can be submitted to AppStore for review. 466 | 467 | You need to log into iTunesConnect (https://itunesconnect.apple.com/), to prepare, publish and manage your APP. 468 | 469 | ![iTunes Connect](demo/itunesconnect.png) 470 | 471 | Create a new APP, add the name, introduction, icon, pricing and other information, and set it as ready to submit the status, and then you can Organizer Xcode in the successful archive (Archive) installation package submitted to the AppStore for review . 472 | 473 | ![Xcode Organizer](demo/xcodeorganizer.png) 474 | 475 | Usually it will take Apple 2 or 3 days to review your app. If the review passes, you can see your app in the AppStore. 476 | 477 | ### Calculate Ad Revenue 478 | 479 | When a user downloads, installs and runs an app on his device, he or she requests the official ad content from Google's ad server for display. 480 | 481 | You can visit the Google AdMob website to see daily ad impressions, clickthrough rates, and revenue. This site also offers very powerful reporting capabilities that show very detailed reports based on country, ad unit, time period. Google has an AdSense app on the AppStore, and you can install this app on your phone to see your AdMob earnings daily. 482 | 483 | Each time a user clicks on an ad of interest, it generates advertising revenue. Most of your ad serving is calculated based on the number of clicks, the so-called CPC ads. 484 | 485 | In calculating advertising revenue, there are several common basic terms: 486 | * CPC (Cost Per Click, cost-per-click) is about US $ 0.06 ~ 1.0; 487 | * CTR (Click Through Rate, show CTR), the result of a large number of statistics is about 1%; 488 | * CPM (Cost Per Mile, CPM), CPM can also be calculated by CPC and CPR, the approximate range is US $ 0.5 ~ 20. 489 | 490 | The price per click varies based on the type of ad, the price that is served, and so on. Since different countries in the world have different economic levels, there are also big differences. 491 | 492 | E.g, 493 | * In the United States, an ad click may yield a gain of $0.2; 494 | * In Brazil, maybe only 2 cents, a difference of 10 times. 495 | * In Japan, clicks on advertising revenue is quite high. 496 | 497 | The following is a comparison of a set of data: 498 | 499 | USA | Brazil 500 | ---|--- 501 | ![USA](demo/datausa.jpg) | ![Brazil](demo/databrazil.jpg) 502 | Japan | Germany 503 | ![Japan](demo/datajapan.jpg) | ![Germany](demo/datagermany.jpg) 504 | 505 | If we conservatively estimate $1 CPM (cost per thousand impressions), 100,000 ads per day will generate about $100 in cash. Then it will generate $3,000 in a month (including weekends and holidays!). 506 | 507 | Let's compare it with the average programmer's salary. In Shanghai, an experienced programmer with 5 year experience, the salary is about $2,300 or so. If you make such the APP, with 10,000 DAU (daily active user), the revenue generated from advertising can exceed the salaries of a programmer. Or even more, if optimized very well. 508 | 509 | I know a Brazilian, develop his game with HTML5 technology, simple, but very interesting. Daily active users is about 100,000, advertising revenue has more than $25,000 per month, so as to achieve the financial freedom. 510 | 511 | ### Advanced 512 | 513 | ### Demand is fundamental 514 | 515 | Earlier we described how to add monetization to APP. But to really get a decent return, you still have to get enough users. In other words, you have to develop enough good APP, can really solve the user's problem, will have more users, more frequent use. 516 | 517 | How to develop a more popular APP? In fact, this is not a programming problem. 518 | 519 | Perhaps you are a technical expert, using the most difficult, coolest technology, but the software products developed, may not be welcomed by users of the product. Sometimes, you use a technology that is actually relatively simple, but really pay attention to the user's pain points, to solve the user's concerns, it is possible your product will be welcomed by users, because of good reputation in the social network to get the natural spread. 520 | 521 | I recommend a book, "Demand - the Fundamentals of Creating Great Business Legends," by Adrian Silesivski. 522 | 523 | Here are some tips from entrepreneurs: 524 | 525 | > This is a good book worth every entrepreneur and every manager of the company to read, and even everyone in the organization should understand the concepts. The book gives some models for creating needs, which are very valuable to readers, we need good ideas, but we need more ways to practice ideas. These two books are done, very worth reading, especially recommended. 526 | - Sun Taoran, founder, chairman and president of La Cara Pay Ltd., author of "Entrepreneurship 36 Military Regulations". 527 | 528 | > Behind every complaint is hidden an unmet need, and behind every need inevitably hides a market that can not be ignored. In fact, any product that meets the functional needs of the user from the outset should be upgraded to the spirit level, the user refuses to trouble, the user needs comfort, it does not seem to have anything to do with the profit, but I'm sorry, it is related to your market. You do not meet, entrepreneurs will go to their own ground-breaking satisfaction. Then waiting for you, or will be a huge crisis of life and death. Therefore, please pay attention to the hope of trouble, rather than to their complaint. This is exactly the most valuable thing that "demand" brings to us. 529 | - Du Zijian, founder of Huayi Media, social media marketing researcher, bestseller "Boundless" author. 530 | 531 | ### User Experience 532 | 533 | Although the sale of Apple mobile phone is very expensive, but still very popular, why? It is undoubtedly the best user experience to win. If you read "Steve Jobs Biography", you can know that the birth of Apple's mobile phone, in fact, is to solve the pain of traditional phones difficult to use. 534 | 535 | Naturally, the app or game we develop on our mobile phone must also be highly user-focused and put it in a strategic position. Mobile APP, not the pursuit of powerful features, complete, you can only do a small feature, but to effectively focus on the needs of users, and provide excellent user experience. 536 | 537 | A rather typical example is this "Flashlight" APP, which is to turn on the phone's LED bulb to temporarily light up the darkness. 538 | 539 | ![Torch APP](demo/torchapp.png) 540 | 541 | This APP has more than hundreds of millions of users, of course, its economic return is also extremely impressive. 542 | 543 | The number of user comments exceeded 6 million and the users wrote: 544 | * Jennifer Baylis: easy to use. # 1 The best Flashlight APP! Very easy to use, open very fast! 545 | * Kitty Davis: I just need such a flashlight APP. 546 | Dennis Castello: It's exactly what it takes and it's done really well. 547 | * Joseph Low: easy to use. Let it work easily! highly recommended! 548 | 549 | ### What Ad is Best 550 | 551 | In the mobile advertising arena, there are many forms of advertising, and are also constantly evolving. 552 | * banner Ad 553 | * interstitial Ad 554 | * native Ad 555 | * reward video Ad 556 | * IAP (in-app purchase) Ad 557 | 558 | Which ad is best for your app, depending on the situation. This requires a good balance of user experience and revenue. If the ad is displayed improperly, or show too often, affecting the user experience or even cause the user offensive, it is the cart before the horse. 559 | 560 | banner Ad | interstitial Ad 561 | ---|--- 562 | ![iPhone Banner](demo/iphonebanner.jpg) | ![iPhone Interstitial](demo/iphoneinterstitial.jpg) 563 | 564 | These two kinds of advertisements are the most basic and classic, each has its pros an cons. Banner ads occupy only a small space at the bottom of the screen, changing the ad content every 60 seconds. The advantage is not too affect the user interface and experience, the disadvantage is because less obtrusive, not easy to arouse the user's attention and clicks. 565 | 566 | Interstitial ad is full-screen, pop-up at a specific time, more able to attract the user's attention and click. Because of this, the interstitial ad has better effects and click revenue is higher than the banner ads more than 5 times, so more recommended. 567 | 568 | When using interstitial ad, please pay special attention to the pop-up time, do not interrupt the user's continuous operation and gaming experience, otherwise it will cause the user's strong aversion. Best practice is to put it in transition between the two stages, such as the game is just over, pop-up screen ads, and then continue to the next level. 569 | 570 | Using cordova-plugin-admobpro to display interstitial ads is also straightforward, requiring just two lines of javascript to complete. One line of code prepares inventory and the other line of code shows ads. 571 | 572 | Here is the example: 573 | ```javascript 574 | // When the game starts, it starts to prepare for interstitial ads, and the background thread downloads the inventory 575 | if(AdMob) AdMob.prepareInterstitial({ 576 | adId: "__ad_unit_id_here__", 577 | autoShow: false 578 | }); 579 | 580 | // At the end of the game level, call API to display the interstitial ad 581 | if(AdMob) AdMob.showInterstitial(); 582 | ``` 583 | 584 | The above two kinds of advertisements are the easiest to use forms of advertisement, and the work integrated into the APP is also the easiest. 585 | 586 | Native Ad is a new way to show your ads in a more harmonious way between their own content. It does not seem obtrusive or abrupt. It's the type of advertising that has the least impact on user experience. Facebook AudienceNetwork and Flurry launched native ads long before, and later Google AdMob also introduced it to developers. 587 | 588 | Reward video Ad, a new ad in the mobile advertising industry. It encourages users to watch ad videos and reward them with some kind of virtual item in the game or app. In previous advertising campaigns, Google did not support giving users encouragement, and even made it illegal to give rewards. Because this is likely to violate the user's own interest, resulting in false invalid clicks. For the new rewarded video ad, other advertisers first introduced and succeeded in the market, Google adopted a relatively flexible and pragmatic attitude. However, advertising video sources are not very rich, many are mediation way from other ad networks. 589 | 590 | IAP Ad is an innovative form of advertising. IAP Ad allows users to shop directly in-app. Because it needs to be integrated with the payment system or the Google Play Store, it's only supported on the Android system. With in-app advertising, app developers can benefit from: 591 | * Maximize your revenue and user lifecycle value by implementing ad serving and in-app purchases in the same app. 592 | * Google automatically helps you determine which users are likely to purchase in-app purchases and show ordinary paid ads to the remaining users. 593 | * No need to develop your own in-app support system or add in-app support code to your app. 594 | * Easily target various segments of the user community with different in-app purchases. By using In-App Ads with the AdMob Audience Builder, you can serve high-priced, in-app products to high-spending groups while showing them to you at lower prices. 595 | 596 | If you want to learn more about native ads, rewarded video ad, buy ads, go to Google [AdMob official documentation website](https://developers.google.com/mobile-ads-sdk/) for in-depth research and study how to use. 597 | 598 | ### Which Ad Most Reliable 599 | 600 | Because of the profitable mobile advertising sector, the mobile advertising industry is also growing very fast. Over the past few years, there have been many mergers and acquisitions. For example, Google has successively acquired DoubleClick and AdMob, Flurry acquired by Yahoo!, MobFox acquired by Matomy, and Millennial Media acquired by AOL. 601 | 602 | ![Top Ad Networks](demo/topadnetworks.jpg) 603 | 604 | Usually the ad platform will provide: 605 | * SDK, providing API for accessing advertising system; 606 | * Register, login and manage advertising system; 607 | * Integration Guide, examples, FAQ; 608 | 609 | Information about the various mobile ad platforms can be found through search or through a number of different sources (eg, StackOverflow.com) and try selectively. 610 | 611 | Here are some of the advertising platforms I've tried: 612 | * Google AdMob 613 | * Facebook AudienceNetwork 614 | * Yahoo! Flurry 615 | * MobFox 616 | * Apple iAd 617 | * MoPub 618 | * Millennial Media 619 | * InMobi 620 | * OpenX 621 | * Smart AdServer 622 | * ... ... 623 | 624 | By trying to use, I am more satisfied with AdMob, Facebook AudienceNetwork, Yahoo! Flurry, MobFox. Especially AdMob, is highly recommended. 625 | 626 | The reason why AdMob is the most highly recommended, there are some prominent advantages: 627 | * Ad fill rate is high. Basically more than 98%, some countries slightly less than 90%, so you can take full advantage of user traffic. After all, it is no surprise that advertising is a major source of revenue and revenue for Google, with advertisers around the world. 628 | * Payment promptly. The monthly earnings are settled at the end of the month and paid on the 20th of the following month; 629 | * SDK is very stable. Integrated documentation and reference code Easy to use, with documentation and system interfaces in different languages; 630 | * Reporting system powerful and easy to use. Data can be analyzed in different dimensions; 631 | * Easy to use. A dedicated APP can be used to track earnings; 632 | * Support in place. A dedicated technical support staff, technical forums with official support, dedicated to answer the technical aspects of SDK access; 633 | * Regularly organize some preaching and training activities, as well as regular online video lectures; 634 | * Customer service is in place. Very patient and friendly, I keep in touch with them. 635 | 636 | Because of Google's excellence in innovation and consistent quality service, it has very high reputation among develoeprs. 637 | 638 | The cordova-plugin-admobpro plug-in, built on the AdMob SDK, not only encapsulates Objective-C / Java / C # native APIs into a unified javascript API but is also much easier to use. Just 1-2 lines of code to complete the ad display. Popular in Cordova's global community, this plug-in is the most-used monetization plug-in. The following is a plug-in download trend curve: 639 | 640 | ![AdMob Download Trend](demo/admobprodltrend.png) 641 | 642 | Facebook AudienceNetwork is not bad. 643 | 644 | Facebook is not only the largest and most active social media, but also offers a variety of related SDKs, including AudienceNetwork for Advertising. Its developer website is https://developers.facebook.com/docs/audience-network. 645 | * Facebook's Fill Rate is not as high as AdMob, about 45-75%. 646 | * Facebook payment is also timely, but also in the 21st of each month to pay last month's advertising revenue; 647 | Facebook's SDK updates are very frequent. A new version will be released in about two weeks, so if there are any bugs, the fix is fast. However, the update frequency is a bit high, sometimes feeling a little behind. Relatively speaking, Google AdMob SDK more stable; 648 | * Management interface and reporting system is also relatively clear and easy to use. The reporting system is not as strong and flexible as Google Admob, seemingly only English interface, it looks like the following. 649 | 650 | ![Facebook AudienceNetwork](demo/fbaudnet.png) 651 | 652 | Flurry is a mobile advertising company that has been acquired by Yahoo, the official site is http://www.flurry.com/. There are 2 main products, one is Flurry Anlytics and one is Flurry Ads. 653 | * Flurry SDK integration is still relatively easy, the reporting system quite satisfactory. Site visit is a bit slow, more time-consuming. 654 | * Payments are slightly slower and are not paid until 60 days after the advertising revenue. 655 | * It is worth mentioning that, Flurry is a relatively early support Native ads (Native Ad). 656 | 657 | MobFox is a European mobile advertising company headquartered in Austria. I used to contact its CEO, he wants me to develop plug-ins for them. Later, because of the acquisition, then later, we knew that MobFox was acquired by Matomy. This company is still good, payment is more timely. Although known as Europe's largest mobile advertising company, and the world is located in the Top 10, but compared with giants such as Google, Facebook, the global influence is really a bit weak. 658 | 659 | Apple's iAd just launches on iOS. As the iPhone's market positioning and pricing significantly higher than the Android system, it also determines the iOS users have a strong purchasing power, so iAd ad click returns relatively high, it goes without saying. However, if you develop an app that needs to run on iOS and Android at the same time, managing it with AdMob is a bit easier. You can also use AdMob's mediation feature to show some of your traffic through iAd, maximizing the benefits of advertising. Later, Apple adjusted the advertising business and stopped iAd service. 660 | 661 | Like OpenX and Smart AdServer, open only to European and American business customers, not for global users and individual developers. Formerly, customers in the United States and Europe saw my open source project on GitHub, specifically looking for me to customize the adware plug-in. Through project cooperation, I was able to understand and become familiar with it. However, because it is not for global developers, it is not recommended. 662 | 663 | As for MoPub, its SDK is open source on GitHub, and it's something different. Its documentation and SDK was not very mature. For some time, you have to compile these SDKs from source code into a jar and framework before using them in your projects, which is really inconvenient. Recently, they have supported their SDK to be loaded into your project with gradle and cocoapods, a lot easier than before. 664 | 665 | Millennial Media (abbreviated mMeida), its SDK Demo aesthetics done well, but customer service and technical support response is really flattered. Have encountered technical problems, submit a question through the Web Form, has not been answered, so I am not happy to use it. I heard later they were acquired by AOL. 666 | 667 | In addition, such as Charboost, TapJoy advertising platform, also more or less seen. However, each person's energy is limited, so did not try them one by one. Charboost, an advertising startup that started up in 2011, focuses exclusively on mobile games and was named Top 10 mobile advertising company by the VentureBeat Index in 2014. Advertised by Chartboost, click revenue is relatively good, but conversely, that is, advertising, access to the user's cost is relatively high. Some of my friends I know are specialized in heavy games, devoted to overseas markets and used more ads on Facebook and Chartboost. 668 | 669 | These mobile advertising platform described above is entirely personal experience and subjective experience. If you are interested, ou can try more by your own. 670 | 671 | ### Promote Your App 672 | 673 | (To be continued) 674 | 675 | ### Online APP 676 | 677 | ### Cloud Seervice 678 | 679 | ### Expert Topics 680 | 681 | ### User Data Analysis 682 | 683 | ### Ad Optimization 684 | 685 | ### In-App Purchase 686 | 687 | ### Social Marketing 688 | 689 | ### Cast Advertising 690 | 691 | ### Appendix 692 | 693 | #### Popular Mobile Marketing Terms 694 | 695 | Part1 Basic Terms 696 | 697 | ROI:Return On Investment的简称。一般而言on这个词是应该小写的,所以ROI似乎应该是RoI,不过大家都约定俗成了,不必较真。ROI是典型的追求效果类的营销的关键指标。在中国的互联网营销,这个值一般指的是,我花了多少钱推广费,直接产生了多少的销售。比如花了1万元做SEM推广,直接卖了3万元的货。ROI会被认为做到了3(即3:1)。这一点与财务计算上的ROI是不同的,后者是利润和投入的比值,但在互联网营销上,大家没有把利润作为R,而是用GMV。关于GMV是什么,本文的下篇有。:) 698 | 699 | Impression:意思是“曝光”,也被称为“展示”或“显示”,是衡量广告被显示的次数,一个广告被显示了多少次,它就计数多少。比如,你打开新浪的一个页面,这上面的所有广告就被“显示”了1次,每个广告增加1个Impression。 700 | 701 | Click:点击,是指互联网用户点击某个广告的次数。 702 | 703 | CTR:Click Through Rate,点击率。就是用click除以impression的比例。 704 | 705 | CPM:Cost Per Mille,这次实际上省略了impression,全文应该是cost per mille impression。Mille是千的意思,在英语中它只跟着per一起用,即per mille,就是汉语的“每千……”的意思。所以CPM是每千次展示的成本。 706 | 707 | CPC:Cost Per Click,每次点击的成本。 708 | 709 | Ads:就是广告(名词)的英语复数啦。Ads = Advertisements。如果是“做广告”(动词),应该用Advertising。 710 | 711 | SEM:Search Engine Marketing的简称。就是搜索引擎营销。不过在中国,SEM其实仅仅指PPC。但是SEM事实上是PPC和SEO的统称。PPC和SEO是什么,下面有解释。 712 | 713 | PPC:Pay Per Click的简称。一般是特指搜索引擎的付费竞价排名广告推广形式,因为搜索引擎竞价排名只有一种收费方式,即按照点击付费。虽然也有其他广告形式也是按照点击数量来进行收费,一般不被称为PPC,而被称为CPC,即Cost Per Click。为什么?似乎是约定俗成。 714 | 715 | SEO:Search Engine Optimization的简称。就是搜索引擎优化,特别指搜索引擎搜索结果自然排名的优化。所谓自然排名,就是不通过给搜索引擎付钱就能获得的排名。不花钱就能被搜索引擎排到前面当然是好事,但大家(每个网站)都这么想,所以要出头还挺难的。懂得这个领域的高手过去能挣很多钱,但今天SEO却越来越短时间内就出效果,所以想要通过SEO挣快钱越来越难。 716 | 717 | Social:社会化,是social marketing(社会化营销)或者social media(社会化媒体)的简称,具体指二者的哪一个要看场合。社会化媒体,在中国过去是人人网、开心网之类,现在是微信、微博、图片分享类网站应用等。 718 | 719 | WA:Web Analytics的缩写。就是网站分析。 720 | 721 | DA:Digital Marketing Analytics的缩写。数字营销分析。 722 | 723 | Part2 数据分析领域 724 | 725 | Dimension:维度。维度是对一指一个事物的不同的方面、特征或者属性。这么说太抽象。简单说,人可以分成男人和女人,性别就是人的一种维度。或者汽车可以分为白色、黑色、红色等,颜色就是汽车的一种维度。维度是最基本的数据结构,任何一个度量(指标)必须要依附于一个具体的维度才有意义。比如说,我说visit=100,这没有任何意义。我说搜索引擎给我的网站带来的visit=100,就有了意义。搜索引擎流量就是维度(即流量来源)的具体的值(就如同男人是性别这个维度的具体的值)。 726 | 727 | Metric(常用作复数,即Metrics):通常翻译为度量或者指标,但是因为指标含义更宽泛,例如KPI或者benchmark都可能被称为指标,所以在我的培训中metrics都是用度量来表示,这样更严谨。度量绝大多数都能能用数字表示,比如汽车的速度,速度就是度量。课程中涉及到的度量分为两类,一类是计数度量(比如常见的PV、UV、访次、停留时间等)和复合度量(两个度量四则运算而成,常见的有转化率、跳出率、留存率、活跃率等)。另外有些度量使用布尔量表示,即是或非。度量必须依附于维度才有意义。 728 | 729 | Unique:Unique是指排重(排除重复)。Unique很少单独用,常用在计数类度量的前面,比如unique visitor,指排除对同一个访问者重复计数之后的访问者数量——同一个人今天到网站一次,明天又来一次,不能就因此变成两个人,unique visitor仍然是1。Unique visitor通常可以简化为visitor,两个可以通用。Unique visitor和unique user是唯一的两个可以加不加unique都算unique的度量。另一个例子是unique impression,即同一个人多次看同一个广告,还是计算为1次。Unique impression和impression是两个不同的度量,因为后者不排重。 730 | 731 | Benchmark:我在大学的时候这个词被翻译为“定标比超”,真是不明觉厉的感觉呀。Benchmark就是“可以作为对比的参照值”。我的很多客户会问,这个指标在行业中的平均情况是什么样呀?他们的问题可以同样表述为:这个指标在行业中的benchmark是多少? 732 | 733 | Pattern:指某种会重复出现的模式或规律。Pattern常常用于发现用户行为上的某些趋同特征。比如,我们发现用户都喜欢在晚上10点到11点打开某个app应用,这就是一种pattern。如果我说发现了一个pattern,很兴奋,实际上的意思就是说我发现了一个规律。规律这词,几十年前就有了,pattern这洋文多有逼格呢…… 734 | 735 | Random:随机数,或者随机性。但是老外们也用它来形容“混沌”之类的意思。 736 | 737 | Cohort:很难翻译,也很难形容,我暂且把它翻译成“队列”。跟Segmentation有点类似,但内涵要多一点,多点排队的意思。你懂的,课堂上讲清楚。Cohort一般是一种分析方法,所以一般不单独出来,而是跟analysis在一起,即cohort analysis。 738 | 739 | Filter:过滤。过滤是指摒弃掉不需要的数据,只留下需要的。过滤都需要遵循一定的规则(这是废话),而且过滤掉的数据往往不能找回。过滤是一种常用的定位某个细分领域的方法,与细分(segmentation)的区别在于,segmentation是把总体分成并列的若干块(segment),而Filter则只保留符合规则的块,而丢弃其他不符合规则的块。 740 | 741 | Segmentation:细分。这是我们最基本的方法,即把总体按照一定的规则分成并列的若干块。做了segmentation之后,每一个块就是一个segment。所以segmentation和segment不是同义词。Segmentation怎么用?怎么发挥最大价值?课堂上有很多案例。 742 | 743 | Part3 互联网和互联网营销分析技术领域 744 | 745 | Cookie:Cookie并没有真正的中文翻译,cookie是在你浏览网页的时候,网站服务器放在你电脑(或移动设备)的浏览器里面的一个小小的TXT文件。这个文件里面存储了一个标识你这个人的匿名的ID,以及一些与你访问的这个网站有关的一些东西,这样当你下一次访问这个网站的时候,cookie就会知道你又来了,并且记住你上次访问时候的一些状态或者设置。Cookie以及与cookie类似的东西是互联网营销的最重要技术之一,几乎所有识别人和标记人的工作都需要cookie及类cookie技术完成。在这次培训中会有详细的说明。 746 | 747 | Deep link:没有汉语直接对应名词,我觉得直接叫“深链”好了,但不能叫做“内链”,后者是另外一个东西。Deep link历史悠久,过去把能够链接到网站的内页(即非首页的页面)的链接都称为deep link,但此后很快deep link这个词的意义就消失了,因为这样的链接实在太普通,都不需要用一个专用的名词来表述。但随着移动端的app的出现,deep link又“东(si)山(hui)再(fu)起(ran)”,特指那些能够跨过app首屏而直接链接到app的内屏(类似于网站的内页)的链接。嗯?如果这个app还没有安装过怎么办?这两期的公开课会专门讲。 748 | 749 | Link Tag:Link Tag特指在流量源头的URL后面加上的标记,用来标明流量源头的名称和属性。最典型的link tag是Google Analytics的UTM格式的标记。目前已经成为标明paid media(花钱购买的广告流量)的标准配置。如何用好它,比你想的丰富,课堂上详解。 750 | 751 | Heat map:热图。在一个图上标明这个图上哪些是获得更多关注的部分。关注可以是眼光,也可以是鼠标点击或者手指的指指点点。热图是做行为统计学研究的好可视化工具。大家都看得懂的东西,但用好则要水平。 752 | 753 | JavaScript:简称JS,网站页面上的程序,能够让页面除了展示内容之外,还能实现更多的程序运行和功能。网站分析工具监测代码就是JS代码,将JS代码部署在你要监测的网页中,就可以把用户在页面上的互动访问行为不间断的发送到相应数据分析工具的服务器,从而获取想要的用户数据。 754 | 755 | Attribution:归因。但是实际上这个词被翻译成“归属”更好。归因是指在多种因素共同(或先后)作用造成的某一个结果时,各种因素应该占有造成该结果的多大的作用,即“功劳应该如何分配以及归属于谁”。为解决归因的问题而建立的模型被称为归因模型,即attribution modeling。但我一直可惜这个词没有翻译好,翻译成归属模型或许更容易理解。 756 | 757 | Path:路径。任何构成先后次序的一系列事件或行为都可以用路径来描述。路径分析(path analysis)也是较为常用的一种分析方法。 758 | 759 | UID:是User Identification的缩写,即用户ID。 760 | 761 | Bots:机器人。非人产生的流量,都被称为机器流量,即bots traffic。Bots是互联网虚假流量主要的创造者之一。 762 | 763 | Spider:常翻译为蜘蛛,蜘蛛是一个自动程序,它的作用是访问收集整理互联网上的网页、图片、视频等内容。比如百度蜘蛛会将互联网的各种内容抓取回来并分门别类建立索引数据库,使用户能在百度搜索引擎中搜索到想要的内容。 764 | 765 | IP:是Internet Protocol(网络互联协议)的缩写。IP地址就是给每个连接在互联网上的主机分配的一个地址,过去用于判断不同的访问行为属于同一个人(因为都是同一个IP记录产生的访问)。但由于各种动态IP和虚拟IP技术,用它判断用户人数已经很不可行。现在游戏领域也常常说起 IP,不过那是另外一个意思,intellectual property,知识产权,往往指的是著名的小说、影视、游戏等作品的人物故事等等。 766 | 767 | Tracking:翻译为跟踪,就是数据分析工具跟踪用户各种行为的“跟踪”,用户所有的线上行为都可以被跟踪。监测这个词的“监”这个字,就是tracking。而测,则是measurement。所以监测这个汉语词,最准确的翻译就是tracking and measurement。监测需要用一定的技术手段实现,其中核心技术之一就是监测代码(tracking code),是一串可以发挥监测功能的程序(很多都是脚本语言编写,比如JavaScript语言)。 768 | 769 | Pixel:本意是像素,但是在监测领域,是tracking code(监测代码)的同义词。 770 | 771 | VAST:即Digital Video Ad Serving Template。一种实现视频程序化广告的基础性协议。目前是4.0版本。 772 | 773 | Part4 流量与用户行为领域的名词 774 | 775 | Bounce Rate:跳出率。会在课堂上简单介绍。 776 | 777 | Referral:翻译为引荐来源。现实生活中,如果我推荐你使用了某个产品,或者我介绍你加入我们光荣的党,我就是引荐人(referral)。而在数字营销中,referral是指那些给我的网站带来了流量的其他网站,通常这些网站上会有链接到我的网站的链接。如果没有做特殊的标记(如使用link tag标记)或者不是特殊的流量源(比如搜索引擎),那么大部分的流量来源都会被监测工具记录为referral。 778 | 779 | Retention:指用户的留存。如何让用户能够留存,是一个重要的课题。在这两期公开课培训中会跟大家介绍如何提升retention。 780 | 781 | Engagement:没有特别合适的中文翻译,这个指标指的是用户在网站或APP上的交互程度或者参与度,可以由多个指标组合而成。比如一个网站有很多交互行为,包括下载文档、观看视频、咨询等,那么会根据每个交互的重要程度给每个交互行为赋值,用户每完成一个交互及赋予相应的数值,这样可以判断不同类别用户的交互程度以及不同页面的交互差异。Engagement和其他一些名词比如effectiveness、performance、acquisition等相似,都是泛指性的名词。 782 | 783 | Session:session实际上和visit是一回事。本来,各类工具都是将用户的一次访问(网站)称为visit,但是随着app的普及,visit app听起来很别扭(因为我们都是use app),所以app也就不存在visit了,于是就用session代替。为了统一表述visit和session,有些监测工具把visit改称session。 784 | 785 | Visit:即访问。指对用户对网站的访问,通常以30分钟为区隔。如果超过30分钟在网站上没啥动静,则一次访问结束。 786 | 787 | Direct:翻译为直接访问,比如用户直接在浏览器输入网址访问,或者用户直接点击收藏夹里的网址进行访问,都会被记为直接访问。除了上述情况,从QQ客户端聊天窗口或微信客户端的链接直接访问网站的也会被记为直接访问。 788 | 789 | Exit:退出,即用户离开网站或APP的行为,用户离开网站前的最后一个页面称为退出页(exit page),离开APP时所在的最后一个screen叫做exit screen。 790 | 791 | Part5 策略与运营 792 | 793 | Acquisition:泛指用户获取。在用户运营中使用的极为广泛,做任何产品的运营的第一步就是获取用户,比如在网页端的推广流量的获取、App推广中用户的下载等。 794 | 795 | Goal:目标,是想要达到某种效果,每个网站都会有一些作为目标的交互,比如点击下载说明书、登录、注册、提交订单等。那我们就可以将这些设定为目标,那么这里引出另一概念:转化(conversion)。每完成一次上述的目标,就可以认定为完成一次转化。 796 | 797 | KBR:Key Business Requirement。关键商业需求。是一个企业商业目标中最关键的。KBR决定了一个企业的其他目标,并且也决定了我们应该如何制定digital marketing的目标,以及针对这些目标选用什么样的指标或KPI。 798 | 799 | KPI:Key Performance Indicator的缩写,译为关键绩效指标,是若干个用于衡量业务表现的最重要的度量。不同的商业目标,不同的业务,所对应的KPI不同。如何设置KPI是一门技术,也是一门科学。在这次的培训中也会做详细介绍。 800 | 801 | Part6 互联网广告领域的名词 802 | 803 | Display Ads:展示广告。展示广告主要指静态的图片广告、动画广告,以及富媒体广告(就是能互动一下的flash神马的)。这一广告形式与文字广告(就是文字链)和视频贴片广告形式是并列的不同类广告形式。 804 | 805 | Banner:广义上是图片或者动画展示类广告的统称。这个词的含义源于上街游行队伍中拉着写有标语的大横幅,后来扩展到互联网广告商,并与display ads同义。 806 | 807 | Pre-roll:也叫pre-roll ads,即前贴片广告。就是视频播放之前的长达10秒到丧心病狂的120秒的视频广告。 808 | 809 | Content Feeds:信息流广告。信息流(主要是在社交网站和APP上)是内容并列排列自上而下像瀑布流一般,而在信息流中插入跟信息内容形态一样的广告,这种形式就是信息流广告。课堂上会介绍。 810 | 811 | Native Ads:原生广告,通俗说是那些看起来就像网站或者app中正常内容一样的广告。原生广告容易和信息流广告混为一谈,但它们并不是一回事。原生广告可以采用信息流来实现,但不仅仅局限于此。 812 | 813 | Reach:人群触达。如果做互联网广告,能够让广告触达到多少人是广告主关心的。触达实际上等同于unique impression,所以它不是动词,而是一个名词,一个用来记录广告触及到了多少人的计数度量。 814 | 815 | Coverage:人群覆盖。跟触达非常类似,只是它的含义更模糊一些。往往用百分比来表示,例如,希望reach到的人群是1个亿,而实际reach到的是6000万,那么coverage大约是60%。Coverage不是一个度量,而是一个约定俗成的说法。 816 | 817 | Viewability:广告可视性。过去统计广告的曝光的时候,不考虑广告是不是真的被人看到了,所以有些广告处在一个很长的页面的第二屏或者更后面的位置,而某个同学只看了第一屏就离开了的情况下,这个广告其实是根本没有处于屏幕中的,这个同学根本看不到这个广告。在不考虑viewability的情况下,这个广告仍然因此而有增加一次曝光(impression),而若考虑viewability,这个广告不增加一次曝光。 818 | 819 | Pre-click:点击前阶段。指流量入口(尤其是广告)在被用户点击之前(含点击本身)的相关用户行为及对应的营销监测与分析体系。 820 | 821 | Post-click:点击后阶段。指流量入口在被用户点击之后的相关用户行为即对应的营销监测与分析体系。 822 | 823 | Fraud:作弊,也有更通俗的写法即cheating,但fraud特别指流量作弊。反作弊是anti-fraud。另一个与fraud类似的反面词汇是spam,即垃圾短信、垃圾邮件之类的骚扰垃圾信息。 824 | 825 | Campaign:特别难找到准确对应的汉语名词,大意是一次有始有终的营销活动。有始,是指营销活动是从严谨的策划和详细的执行计划开始的,有终,是指营销活动有清晰的执行结束的节点。所以心血来潮的营销“游击战”不能称为campaign,那些几乎永远不停止的营销行为(例如SEM投放)也不能称为campaign。 826 | 827 | Audience:受众。就是广告的阅览者,普罗大众。受众这个词太书面化了,但是确实没有比这个更明确的词,所以在这两期公开课中都会用这个词。 828 | 829 | Target Audience:目标受众。任何人都可能看到你的广告,但只有那些合适的人才会购买你的商品。所以,合适的人就是你的目标受众,是你最希望影响到的那群人。 830 | 831 | Effectiveness:效果。这是广告主评估品牌推广类广告好坏的一个关键指标。效果的含义比较广泛,在不同的campaign目标下可能不尽相同。比如,能够覆盖到的人群情况(coverage)可以作为一种效果;或者,人们是否真正对你的品牌产生了认知(awareness)也被称为一种效果。类似的,人们也用performance来表示营销的好坏,二者是近义词,但又不完全相同。Performance更偏重有实际产出的具体效果,因此常常被翻译为“绩效”,例如campaign产生了多少的click,产生了多少的交易等等。因此,effectiveness较为抽象,几乎只在品牌推广中被提起,而performance较为具体,在效果类推广中更为常见。 832 | 833 | Efficiency:效率,即达到某种效果所花费的成本(包括金钱与时间)。品牌推广类营销常用,效果推广类很少提及。 834 | 835 | Branding:品牌推广。 836 | 837 | Awareness:对品牌或产品的认知。做广告的首要目的,就是让消费者意识到你的品牌或者商品的存在,说白了就是搏存在感。看看近期密集发布的手机在各个新闻app、电商app中频频发力,就知道awareness对广告主有多重要了。 838 | 839 | Buzz:消费者或网民对于品牌、产品等广告主在乎的事情在网上发出的各种声音。与IWOM是一个意思。Buzz是苍蝇蜜蜂之类的嗡嗡声,无数网民每天在网上发出的各种意见, 在上帝看来就像苍蝇蜜蜂般嗡嗡作响。 840 | 841 | IWOM:Internet Word of Mouth的简称。即网络口碑。 842 | 843 | Survey:调研。这个词是一个有意思的词,主要在它的发音。作名词的时候重音在前——[?s??ve?],作动词的时候重音在后——[s??ve?]。 844 | 845 | ePR:通过互联网进行的PR。 846 | 847 | IP:Intellectual Property,即知识产权。就是过去说的那些原创的,有知识产权的东西。现在天天出现在各种口语和报道中的这个词指各种在互联网上创作的内容。例如,我的这个公开课也可以称得上是IP。Papi酱的网红视频?当然也是咯!与上篇的IP写法一样,意义完全不同。 848 | 849 | Minisite/Microsite:没有对应的汉语名词,而且大家也从来不用汉语描述它。就是指为campaign专门定制的campaign网站,这些网站规模都不大,所以被称为mini(迷你)或者micro(微)。 850 | 851 | Programmatic:程序化(广告)。一种革命性的广告运作方式。在课堂中会有详细的介绍。 852 | 853 | DSP:Demand Side Platform(需求方平台)。程序化广告的广告投放管理系统平台以及相应的服务提供方。具体解释这里不多说了,到时候课堂上会详细介绍。 854 | 855 | SSP:Supply Side Platform(供应方平台)。程序化广告的广告资源管理系统平台以及相应的服务提供方。具体课上介绍。 856 | 857 | RTB:Real Time Bidding(实时竞价广告),这是程序化广告最重要的一种方式,也是理论上最佳的广告资源变现方案。但具体如何实现,优劣问题,以及国内的情况,课上详细讲。 858 | 859 | Bid/Bidding:竞价。搜索引擎PPC广告,或者RTB广告,都需要竞价。类似于拍卖,但需要在预置条件的前提下通过程序来实现。课堂上详细说。 860 | 861 | Bidder:Bidder即竞价者,在PPC广告范畴内,bidder就是普通SEM的操作从业者。在程序化广告范畴内,bidder一般就是DSP服务提供商。 862 | 863 | DMP:Data Management Platform,数据管理平台。程序化广告(programmatic advertising)中为实现定向受众所需要倚仗的数据平台。但它能做的还远远不止这么多。培训课程中会专门涉及。 864 | 865 | Verification:特指广告的验证。验证有两类,一类是验证广告是否真实被投放出去了,以及投放出去之后广告所处的环境是什么。什么是广告所处的环境?——对于PC web上的广告而言,环境就是这个网站以及具体承载广告的这个页面。另一类是验证广告覆盖的人群的情况是不是跟预想的一样。 866 | 867 | Part7 效果营销领域的名词 868 | 869 | Conversion Rate:转化率。是指从流量到实际销售转化的能力。与ROI本质是一样的。只是ROI衡量的是现金(收入)对现金(支出)的对比,而转化率衡量的是销售的数量与进入销售漏斗的人数(或者次数)的比例关系。 870 | 871 | Churn和Churn Rate:客户流失和客户流失率。所有需要尽可能让用户反复购买(或付费)的生意,都有这个度量。看名字就知道,这个度量用来描述失去客户的情况。具体如何定义,以及如何分析,在课堂上会有详细说明。 872 | 873 | SERP:Search Engine Result Page。就是搜索引擎的搜索结果页面。 874 | 875 | Search Query:用户的搜索词。人们在各种搜索框(典型的如搜索引擎的搜索框)内填入的词,这些词可能很不结构化,且非常随意。而keyword,则是使用搜索引擎竞价排名的广告主设定的关键词。 876 | 877 | Keyword:使用搜索引擎竞价排名的广告主设定的关键词,较为结构化,较规范。这些词不可能穷尽用户的search queries,因此搜索引擎会把用户的search queries转变为与之最相近(不过是否真的是最相近,那就只有搜索引擎知道了)的keywords,然后显示搜索的结果。 878 | 879 | Organic Search:自然搜索流量源,即用户点击了自然搜索结果产生的流量,而不是点击了竞价排名(PPC)而产生的流量。 880 | 881 | Affiliate Marketing:有时也就直接简称为Affiliate。这个词在国内没有对应的名词,在台湾被译作“联署营销”,但是这个翻译似乎仍然莫名其妙。Affiliate marketing就是典型的代销模式——你的东西,我帮你卖,卖出多少,你给我按照一定比例提成。在互联网上,affiliate marketing变成了我帮你引流量,我给你的流量如果有转化了,你给我提成。国内的亿起发、领克特等就是做affiliate marketing的专门平台。 882 | 883 | EDM:Email Direct Marketing(电子直邮营销)的缩写,是利用电子邮件(Email)与受众进行商业交流的一种营销方式,电子邮件营销是网络营销手法中最古老的一种。 884 | 885 | Performance:绩效,即通过营销之后获得“战果”。ROI就是一种典型的performance,销售额之类的也是。 886 | 887 | GMV:Gross Merchandise Volume。这是电商经常会用到的词,书面是“毛销售量”,实际就是销售流水。当然,销售流水不等于最后赚到的钱。GMV=1销售额+2取消订单金额+3拒收订单金额+4退货订单金额。GMV是流水,只要你下了订单,生成订单号,就算了GMV。而这个订单转化为平台的实际收入还会有2、3、4这些流失量。下单以后后悔了取消订单,订单送到你面前了后悔了拒收订单,签收订单以后后悔了要退货(这个步骤不同的电商平台计算方法不一样,有的平台是不管退不退货都搜算进销售额中)。总之,人艰不拆,GMV数字大,好看,而且我们监测起来也最容易,所以这是最常用的。 888 | 889 | AOV:Average Order Value。平均订单价格。 890 | 891 | Monetization:变现。 892 | 893 | MRR:Monthly Reoccurring Revenue,直译是每月都会产生的收入,实际就是用户要交的月费。比如我办了一个158元的包月电话套餐,对于电信公司而言,我就给他们贡献了MRR 158元。 894 | 895 | Part8 移动端常用的 896 | 897 | Screen:如果说web端用page view来记录页面被浏览的次数,那么screen就是app的页面,screen view就是app的页面浏览的次数。但因为screen没有page这个东西,所以就用screen来表示。我也不知道应该对应什么汉语名词,或者应该用“屏显”?反正相信你懂的。。 898 | 899 | DAU:Daily Active User(日活跃用户数量)的缩写,通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),是用来衡量产品的用户粘性的重要指标。 900 | 901 | MAU:Monthly Active User(月活跃用户数量)的缩写,概念与DAU相仿,区别在于时间跨度。MAU除了能衡量用户粘性,还可以分析产品衰退周期。 902 | 903 | H5:是HTML5的简称。它实现的功能与Flash类似(用于实现动画和各种酷炫的人机交互界面等),但是比Flash具有更强的兼容性,可扩展性,稳定性以及安全性,因为该技术是HTML的延展,而非如同Flash一样是一个单独创立出来的事物。目前各大互联网钜子们——包括Adobe(Flash的所有者)——都已经加入支持H5,H5在移动端几乎已经完全取代了Flash。 904 | 905 | ASO:App Store Optimization。狭义上指针对苹果应用商店的app排名所做的优化工作。广义则指对所有的应用市场的优化。与SEO类似,都是排名优化,只是优化的对象变成了应用市场。 906 | 907 | LBS:Location Based Service,基于位置的服务。低逼格的讲就是用手机定位之后,能否关联一些服务或广告的。当然实际的应用比我说的肯定逼格高很多。 908 | 909 | Part9 企业、组织机构与产品 910 | 911 | Google Analytics:谷歌分析,简称GA,是全球用户量最大的网站和APP上流量用户行为的监测与分析工具。 912 | 913 | Universal Analytics:简称UA,是GA在2013年左右做的一次大升级版本,目前无论是免费还是付费版的GA,都是基于Universal Analytics的。GA的付费版叫Google Analytics Premium,简称GAP。 914 | 915 | GTM:Google Tag Manager,是谷歌公司用于管理网页上各种广告、监测和分析代码的平台型工具。课堂上会简单介绍。 916 | 917 | DCM:DoubleClick Campaign Manager的简称 (即新版 DoubleClick for Advertisers 7),DCM 是一个管理及投放广告的全面解决方案,覆盖从 广告策划、管理、定位、投放、优化到生成报告等。广告的impression和click等几乎所有的度量,都可以通过它来进行监测。 918 | 919 | AdWords:全称Google Adwords,是谷歌搜索引擎的关键词竞价系统,按点击收费(CPC)。 920 | 921 | AdSense:全称Google Adsense,是谷歌推出的针对网站主(简称发布商)联盟的一个互联网广告服务,通过程序来分析网站的内容,并且投放与网站内容相关的广告。 922 | 923 | DAA:Digital Analytics Association,数据分析协会。美国的互联网营销数据分析行业协会,号称是全球协会,但主要章程和成员都在美国,对其他国家的影响力较小。 924 | 925 | IAB:Interactive Advertising Bureau,美国的互动广告局,也是类似于DAA的行业协会,主要领域是数字广告。这个协会在美国,但对全球数字广告的影响力巨大,尤其是标准和技术上。 926 | 927 | #### 如何发布 APP 到 Apple AppStore 928 | 929 | #### 如何发布 APP 到 Google Play Store 930 | 931 | #### 如何发布 APP 到 360 应用商店 932 | 933 | #### 如何用 Google Analytics 做用户数据分析 934 | 935 | 936 | --------------------------------------------------------------------------------