对移动游戏开发者来说,提高曝光度对公司盈利至关重要,若能登上App Store是再好不过了,但不是所有游戏都有这个机会,所以游戏运营策略很重要。
首先,自己的产品要过硬,但是好游戏很多,还是有很多无法见天日,那应该采取何种策略?我们曾在《失败怪圈:今天的移动App在重蹈1999年的覆辙》一文中曾讲过,有开发者发布App的其中一种方法就是:先在相似的小市场探路,进行测试,到正式发布的时候才选择真正的目标市场,这样就有更多时间和机会对产品进行调整。
同样在广告公司RTB的记录中,有许多公司都采取了这种方法。比如他们的目标市场是北美和西欧,他们会选择澳洲和新西兰作为试点,因为这里的用户在品味和风格上,都与西方国家高度相似。一般这些公司国际化的步骤是这样的:新西兰——澳大利亚——加拿大——美国,这样一步一个台阶的方式能确保游戏机制、盈利机制、用户获取及用户留存模式的有效运作,也能保证游戏在正式进入真正需要花费大量资金进行营销的大型市场之前能很好发挥作用。还要做的其他工作包括分析用户特征,衡量这些机制下的广告费用及速度等等。
最后,在追求国际化的路上,游戏开发者要避免以下4大错误:
1. 产品发布页面粗糙:许多游戏公司都还没有意识到你的游戏在应用市场页面外观的重要性,如果你的画质粗糙,评分又很低,会吓跑访问你页面的潜在玩家。
2. 做不适合自己的游戏:你游戏的DNA是什么?你真的是一个硬核游戏公司吗?如果不是,就算你花大把的钱也无法撞倒南墙。
3.不注重分析:如果你不理解你的同行、你的用户获取成本以及一个用户的终身价值,你离失败也不远了。
4. 依靠运气:如果你看到别的创业者成功了,觉得那是运气,那就错了,乞求好运不是你的商业策略,也不是你的制胜法宝。
产品迭代真的很重要,你需要在几周内迭代,而不是几个月内迭代,对Android游戏开发者的要求也许更高,如果迭代要快,前面的基础要做好,要打牢,阶梯化的方法是个不错选择。
http://orgcent.com/android-textview-imagespan-imagegetter-setcompounddrawables/
UITableView 基本使用方法
1. 首先,Controller需要实现两个 delegate ,分别是 UITableViewDelegate 和 UITableViewDataSource
2.然后 UITableView对象的 delegate要设置为 self。
3. 然后就可以实现这些delegate的一些方法拉。
(1)- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
这个方法返回 tableview 有多少个section
(2)- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;
这个方法返回 对应的section有多少个元素,也就是多少行。
(3)- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath;
这个方法返回指定的 row 的高度。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
这个方法返回指定的 section的header view 的高度。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
这个方法返回指定的 section的footer view 的高度。
(4)- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath;
返回指定的row 的cell。这个地方是比较关键的地方,一般在这个地方来定制各种个性化的 cell元素。这里只是使用最简单最基本
的cell 类型。其中有一个主标题 cell.textLabel 还有一个副标题cell.detailTextLabel, 还有一个 image在最前头 叫
cell.imageView. 还可以设置右边的图标,通过cell.accessoryType 可以设置是饱满的向右的蓝色箭头,还是单薄的向右箭头,
还是勾勾标记。
(5)- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
返回指定的 section 的header的高度
(6)- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
返回指定的section 的 header 的 title,如果这个section header 有返回view,那么title就不起作用了。
(7) - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
返回指定的 section header 的view,如果没有,这个函数可以不返回view
(8) - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
当用户选中某个行的cell的时候,回调用这个。但是首先,必须设置tableview的一个属性为可以select 才行。
如果不希望响应select,那么就可以用下面的代码设置属性:
下面是响应select 点击函数,根据哪个section,哪个row 自己做出响应就好啦。
如何让cell 能够响应 select,但是选中后的颜色又不发生改变呢,那么就设置
cell.selectionStyle = UITableViewCellSelectionStyleNone;
(9)如何设置tableview 每行之间的 分割线
如果不需要分割线,那么就设置属性为 UITableViewCellSeparatorStyleNone 即可。
(10)如何设置 tableview cell的背景颜色
(11) - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
这个函数响应,用户点击cell 右边的 箭头(如果有的话)
(12)如何设置tableview 可以被编辑
首先要进入编辑模式:
如果要退出编辑模式,肯定就是设置为NO
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
返回当前cell 要执行的是哪种编辑,下面的代码是 返回 删除 模式
-(void) tableView:(UITableView *)aTableView
commitEditingStyle:(UITableViewCellEditingStyle) editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
通知告诉用户编辑了 哪个cell,对应上面的代码,我们在这个函数里面执行删除cell的操作。
(13)如何获得 某一行的CELL对象
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;