随着地图已经成为了智能手机上必备的工具,人们对地图定位的精确性要求越来越高。Google 曾推出一个改善 Google 室内地图定位的 Android 软件,而微软最近也对自家的 Bing Maps 进行了,最新支持的 12 种室内地图总数升至 900 多个,而且场馆地图做的更精确、更人性化。  从下图可以看出,Bing Maps(上)对场馆地图的显示更加准确,而 Google Maps(下)显示的比较简单。Bing Maps 将商场里每家商铺的名称、大小和具体形状都清晰的展示出来,让用户很容易根据现场的环境来识别自己所处的位置。  下图是纽约时代广场附近的城市地图,该图中 Bing Maps 将所有带有室内地图的区域用蓝色标识出来。这样用户一眼就可以看出哪些地方有室内地图,并可以看到商家的名称。  下面这种地图的显示方式和前面几种相比更加人性化,但这种显示需要传输的数据量更多,整个界面也显得也更加杂乱。不过从用户的角度考虑,我需大家更喜欢这种方式。  另外,这次 Bing Maps 更新还新增了 3D 建筑显示,对用户来说显示方式更加友好。不过目前这种 3D 模式只支持美国、英国、加拿大和法国一些城市,其他城市 3D 建筑视图还在陆续添加中。  微软虽然在地图上是后来者,但相比 Google 地图还是有很多可圈可点之处。而且现在越来越多的地图网站开始弃用 Google 地图奔向 OpenStreetMap(获微软支持),以及微软和诺基亚在 WP 和塞班手机上的合作,恐怕会给 Google 地图市场带来很大的冲击。

  近日,苹果开始拒绝应用访问 UDID。这不仅给开发商造成了不小的困扰,。  UDID 本身无害,它并未携带用户的任何私人信息,但开发商可以将之与应用里聚集的信息结合,用以追踪用户行为。如果禁止,,UDID 的禁用将会出现导致许多问题,苹果当然会提供备选方案,但能解决问题吗?  苹果在今年二月就已经出台了一份报告,建议开发商停用 UDID。其实开发商通过 UDID 告诉用户他在某个设备上使用了开发商的应用,本身不是件坏事。比如开发商 David Barnard 只是利用 UDID 帮助将 App Cubby 的应用从一台设备同步到另一台设备。若服务器不能分清各个设备,此工作就无法进行,开发商也就不能为用户提供同步服务。  另一个例子就是非常受欢迎的 Twitter 应用 ,它利用 UDID 来分清消息应该发送到哪台设备,哪台设备已经收到了这条消息,如果没有 UDID,应用就无法分清。所以,。  开发商要将一个应用在不包含广告的情况下安装在某台独立设备上是合法的,苹果也知道自己需要为开发商提供别的选择,所以推荐使用 (Core Foundation Universally Unique Identifier)。  。CFUUID 只有在应用向 iOS 系统发出请求时才会被激活,开发商可以将之自行存在某个地方,但它可能被删掉而且从此无法找回,而 UDID 一旦激活,则会永久存在于设备上。  正如 Tweetbot 工作室的 Paul Haddad 所说:CFUUID 问题很多,如果你从一台旧设备中备份文件到新设备中,两台设备就拥有相同的 CFUUID。如果你从临时文件中备份操作系统,就会出现一个设备里存在不同 CFUUID 的情况。  当然,除了 CFUUID,还有其它接解决方案,但也都存在局限性。比如,利用 Mac 地址,但是它就像 UDID 一样是永久的,会被网管禁止访问。黑客通常会通过 Mac 地址识别用户设备所在地,如果苹果禁用 UDID,接下来就可能禁用 Mac 地址。  Haddad 说:“如果你想以一种万无一失的方法追踪某台设备,现在还没有比 UDID 更合适的选择。当人们想彻底清理,储存,更新设备时,UDID 的缺失会为开发商带来许多难题。停用 UDID 不仅仅是对广告网络及那些使用 UDID 追踪用户行为而盈利的人造成冲击,也会对想要真正为用户带来更好体验的开发商造成影响”。  当然,你也可以利用现在的 UDID 或 Mac 地址以及 App 的 ID 进行加密,作为每个应用和每台设备的的独立序列号,但这种方法在多个程序之间追踪用户就行不通,像 Openfeint 及 Appfire 就通过在应用生态系统内使用登录系统作为替代方案,但这种方法并不对每个应用都适用。

原文作者 英文原文:译者:  过去的三个月中我为 iOS 平台创建了三个 AIR Native Extension 的扩展(在 中可以找到代码),这些扩展全部被用在我们的游戏 中,同时我们也总结了很多经验。虽然我记得并不全面,但下面这几条建议,可以给很多打算开发 ANE 项目的开发者助以一臂之力。  ————-  文档  ————-    这两篇文档对初学者很有帮助,如果你不知道该如何起步,可以从阅读这两篇文档开始。在网络上也有很多好的文章,只要 Google 一下就行了。    大部分的开发所需的资料在这篇 中都可以找得到。  ——————-  编写 Actionscript 代码  ——————-    确保你的 Actionscript 接口是你的项目中想要的。不要往 Actionscript 里被动地照搬 iOS 接口,要像编写常规 Actioscript 类那样定义你的接口。  记住,后期如果修改原生代码只会影响到 ANE 扩展本身,但如果修改 Actionscript 接口则会影响到所有使用该 ANE 的项目。所以在前期要尽可能完善地定义你的 Actionscript 接口。    为了避免错误的发生,你需要在调用 ANE 方法的时候做参数合法性的检查,你可以等到调用原生代码时再做检查,但如果提前在调用 Actionscript 接口的时候就做检查会更简单一些。如果你能保证每次调用原生代码时都不会出错,比如参数个数和参数类型,那么完全可以只在 Actionscript 里做判断。  当然,如果你习惯于在C里写错误检查,当然可以。我个人更喜欢在 Actionscript 里做这件事情。    即使你打算仅为 iOS 写扩展,我也建议你创建一个原生类库的替身。用纯 Actionscript 代码创建这个替身,这样它就可以为所有的平台所用。在这个替身里按照 iOS 原生接口定义一套纯 Actionscript 接口方法,即使在调用的时候抛异常或者返回空值也没有关系,至少它是合法的 Actionscript 调用,而且可以在其他平台比如桌面上测试使用。  如果不用这样一个替身,你就每次只能在 iOS 设备上做测试,这样会让开发测试工作极为痛苦。相反,如果使用这个替身,你可以在桌面上快速发布应用来测试那些与设备不相关的功能和模块。  —————-  编写原生代码  —————-    你并不是必须要使用 Objective-C,但是如果想要实现苹果的程序接口,用 Objective-C会很方便。否则你需要用C或者C++。    AIR 和原生代码之间的接口是用C写的,所以你的原生代码需要引用一个包含C代码的文件来实现这些接口。如果你把接口放在.c 文件中,那么你不能使用任何 Objective-C功能(比如你无法用 objective-c的语法去调用 objective-c接口),但是如果你把接口放在了.m 文件就可以。所以用.m 文件会更方便一些。    但是你需要在 XCode 项目设置中的警告选项里把”missing function prototypes”这一项给关掉。    很多 ANE 的例子都使用了”extInitializer”和”extFinalizer”来给扩展的入口和出口函数命名。但如果在项目中使用多个 ANE 扩展,这样会导致命名冲突。所以给入口和出口函数起一个独一无二的名字。    在定义接口的时候,你可能需要重复输入很多遍类似这样的代码来定义函数  我建议使用宏定义来代替所有这些重复的定义方式。你可以在中找到宏定义的例子。(感谢 的提供)    网络上很多关于在 XCode 里如何设置这个选项的讨论,有人说”no”有人说”yes”。基本上,说设置成”yes”的说明你的应用在发布的时候需要链接外部类库,这个选项就是这个意思。但是这也意味着你在发布含有此扩展的 AIR 应用时,你必须要告诉编译器你的 iOS SDK 在哪里,这样你才可以使用那些类库。具体看下面第 18 条。  如果你得到这样一个编译错误  则你可能要么忘了开启这个选项,要么没有给编译器指明 SDK 的位置。    你的原生扩展不能在除主线程之外其他线程创建 Actionscript 对象,而且必须要从 AIR 端调用。这样会导致在 Objective-c中使用块的时候问题重重。然而,你可以通过一种途径来达到这个目的,那就是使用 Actionscript ExtensionContext 事件派发机制。方法如下:  1,在一个线程中,创建一个原生对象并储存数据。  2,派发事件给 ExtensionContext,为下一步传送必要的细节。  3,在事件响应的方法中,调用原生接口来获得这个原生对象。  4,在这个被调用的原生方法里,利用该原生对象创建一个 Actionscript 对象。    AIR 应用是在一个标准的 window 对象里运行的,你可以通过下面的方法获得这个 window 对象:  得到 window 对象后你可以给它添加 subviews 来显示原生的 view 对象。  ——————–  编译扩展  ——————–    当我开发 Game Center 扩展的时候我创建了一个简单的 AIR 应用来测试 ANE。  我创建了一个 ANT 脚本来编译整个扩展(编译原生C类,编译 AS3 类,编译 AS3 原生替身类,并把它们全部打包入 ANE 里)。  结果就是,在 Eclipse 里点击一次,我就可以编译和测试整个项目,下一步就是拖入设备直接测试应用了(XCode 里的 Organiser 可以很方便的实现这步)。总共花了差不多 10 秒钟的时间来打包,虽然仍然比理想的多了 9 秒,但已经比我见过的大多数工作流都要好很多。  也许用 Flash Builder 有更好的方法(因为我用的是 FDT),而且你当然不必使用 ANT,任何编译工具都可以达到这个效果。但是你需要尽可能的使用流水线的方式来编译和测试这个流程。如果你需要这些代码,可以在 里找到。    如果你正在扩展里使用一个第三方类库(比如在 里的 Flurry 统计类库),你需要在编译的时候使用“-platform iPhone-ARM” 参数来引用这个类库。    如果你会用到任何一个但不是大多数的 iOS SDK 类库,你需要创建一个 文件来指明你需要使用的类库,以及应用所需要的最小 iOS 版本。我为每一个扩展都创建了一个 platform.xml 文件,因为在使用 AIR3.1 编译时会出现一个有关未知最小 iOS 版本的警告,使用这个文件会隐藏这个警告。  —————–  打包应用  —————–    这个 SWC 里包括了一整套与原生扩展相同的 Actionscript 接口,所以你可以使用它进行编译,并且在开发的时候用来测试。当然,不依赖原生扩展的 IDE 不会正确地发布移动应用,但你可以用我介绍过的那种批处理编译脚本来实现最终的正常编译。    默认情况下,AIR 编译器会使用 iOS SDK 4.0 来编译应用。如果你使用了这个版本里所不包括的新功能,则编译的时候就会出错。这时需要指明 iOS SDK 的新版本位置,从而实现对新功能类库的引用。在中查看详细信息。在 Flash Builder 里,在配置原生扩展的某个面板中可以进行这个设置,但如果你使用命令行来编译,可以使用-platformsdk 标签来指定 iOS SDK 的路径。  在编译应用的时候你可能会遇到多处下面这样的警告:  这些只是警告,不用去理它。4位对齐只是一个优化,并非是必须的。  —————–  最后的最后  —————–    当完成了扩展的开发,你可以有三个选择:  1, 只让自己使用。  2, 向其他开发者开源。  3, 卖给其他开发者。  你可以问问自己,是什么让你的应用独一无二。如果原因不是你的原生扩展(实际上很少是因为这个),那么请选择第二个或者第三个,如果每个人都这么做,你也会从中受益。  另外,让更多人从你的扩展中受益,可以让 Adobe AIR 这项技术在移动开发领域里更加强大和稳定。这会鼓励其他的开发者去使用 AIR,也会鼓励 Adobe 继续开发和改进它。  在 我们选择了第二项,因为比起花时间来运营我们的原生扩展,我们更愿意花时间来运营和支持我们的游戏。

黄一孟  成功其实并没有太多的秘诀,旁观者大多只能看到表面的光鲜,而注意不到背后的辛苦努力。努力和付出往往不能和成功画上等号,但却不会成为徒劳的浪费。所有这些都会成为宝贵的积累,当机会来临时,所有的付出都会有回报……  VeryCD 创始人黄一孟在今年 3 月出现在福布斯“30位 30 岁以下创业者”榜单中。黄一孟有着顽强的创业基因。他曾经因为盗版问题而不得不让 VeryCD 痛苦转型,一年之间转身网页游戏即获得了业界好评。下文是黄一孟在知乎上的文章,他详细分享了为何转型网络游戏并如何在互联网取得成功的心得。  首先要澄清下关于 VeryCD 的问题,与很多人猜测所不同的是,无论是《神仙道》,还是我们自己研发的 2 款游戏,都不是依赖 VeryCD 的用户资源而取得成功的。相对总规模,VeryCD 带来的用户量非常有限,甚至可以忽略不计。VeryCD 本身就不是一个游戏品牌,对于 VeryCD,我们也有他自己的定位和发展方向。也是因为这个原因,我们的游戏创立了自己的品牌——心动游戏。与 VeryCD 是完全不同的独立业务。  心动游戏从创立开始一共做了运营了 3 款游戏,《天地英雄》和《盛世三国》是我们自己研发的产品,基本都做到了同类游戏中的第一,达到数千万级的月收入。但到目前为止,最成功的还是我们代理的游戏产品——《神仙道》,现在已经是网页游戏无可争议的第一名,收入甚至超过了大多数的老牌客户端网络游戏。  我想,《神仙道》应该算是一宗幸运的1+1>2 的成功合作。  我们做为一只擅长产品和技术的老牌创业团队,在 VeryCD 的创业过程中,累计了大量产品和技术上的经验。VeryCD 自身做游戏联合运营的时候,对于游戏运营商的需求和烦恼,我们又有切身体会。这一切,在我们研发和运营第一款游戏《天地英雄》的时候,得到了体现和验证:  1. 我们的游戏服务器运维架构从第一天就和千万级用户量的互联网站做得一样,保证了强大的扩展性和最低的运维成本。  2. 我们深知自己只擅长产品和技术,而不是运营推广,所以从最早开始就确定了已联运为主的策略,并且直接给了所有联运合作伙伴最好的分成比例,不分大小,没有阶梯。  3. 我们把游戏完全看成一个互联网产品,把研发期做为产品周期中的一小部分,把更大精力放在产品上线后的调整和改进,用互联网产品的方式进行统计和分析,结合用户的反馈和自己的切身体验,合理的规划产品后期的发展方向。  《天地英雄》做为一个底子不够成熟的产品,在我们的努力下,做到了当时网页游戏开服量和收入的第一。这个过程中,我们吃了不少的苦,走了许多的弯路,也积累了非常多的宝贵经验。  这些经验给《神仙道》提供了很好的参考,也少走了很多的弯路。  当然,最终的成功主要还是要归功于《神仙道》的研发团队——光环。经过了这个项目的磨练和成长,光环绝对已经成为国内最好的游戏制作团队之一(加个之一是必须的,毕竟我们还有自己的 2 只研发团队,也是很厉害的哈),  稍微总结下我对光环的映像,最大的特点就是整个团队有爱,有追求,有理想,特别是制作人叶斌。所以《神仙道》不是一款急功近利的产品,这是一个游戏制作团队的梦想,而不只是一个赚钱工具。  所以《神仙道》的美术水准是页游的一个标杆,至今都还没有人能超越。所以《神仙道》的研发团队至今还能通宵达旦的工作,为《神仙道》不断增加新奇的玩法,不断优化玩家的游戏体验。  成功其实并没有太多的秘诀,旁观者大多只能看到表面的光鲜,而注意不到背后的辛苦努力。VeryCD 创业 9 年,有太多的努力和尝试没有取得成功。光环原来只是一家替人做网页的小公司,花了 2 年做的第一款网页游戏,以失败告终。努力和付出往往不能和成功画上等号,但却不会成为徒劳的浪费。所有这些都会成为宝贵的积累,当机会来临时,

  英文原文:  在我以前的一个公司里,我们那层楼里公用的卫生间的布局是这样的:  (请原谅我拙劣的画技。)  当在厕所里完事后,我们的行走路线如下:  很多人在洗完手后都不愿意再去触碰门把手(可以理解)。 但有些人是非常的不喜欢,以至于他们会拿着纸巾到门边,拉开门,然后把纸巾丢在地上离去。  一天下来,门后会出现一堆被丢弃的纸巾。  楼层的负责人想解决这个问题,他在纸巾抽取盒上贴了一张写有告诫的纸:  这种告诫没有起到任何作用。相反,它让人们感到很讨厌,惹得有些人不高兴。有些人甚至往地上丢了的纸巾,因为他们不喜欢这种被别人来告诉应该做才是正确的方式。  这种告诫不可能起作用。往地板上丢纸巾的人知道自己的做法“不对”。可能是相比起采取“正确”的做法,他们不想触碰门把手的愿望更加的强烈。也可能是,他们为了自己能舒服一些,不在乎把卫生间弄的稍微脏乱一些。不管是哪种原因,这种告诫是不会起作用的,因为,问题原因不是人们不知道正确的做法。他们知道自己在做什么,只是出于一些原因,他们不在乎吧了。  在我离开这个公司的时候,这个问题仍然没有解决。也许现在问题依旧。  解决这个问题的一种实际有效的做法应该是适应这些人的行为方式:在门边放置另外一个垃圾筒就好了。  他们从来没有试着这样做。他们只是不断的贴出更多的告诫,因为他们确信:他们的要求是。  这是一种常见的思考问题的方式。我们在制止某件事情时通常的做法是对着他们大喊大叫,而不是接受人们的这种行为的现实——从充满争议的国家法规到被动消极的官方警告。这些办法措施通常不会有效,经常会引一些附带的破坏作用,就像是“禁酒”法令和正在进行的关于“毒品”的“战争”。  还有最近的关于版权侵犯的议案。  大传媒公司认为他们坚持不懈的打击盗版,因为他们认为盗版让他们损失了很大一笔潜在的收入。  这确实是实情,但并不是他们想象的那么严重,而且也不是他们想象的盗版产生的原因。   上的一个有趣的漫画很好的说明了这个问题:人们希望从传统的分法渠道之外获得电影和电视剧的需求在迅速的膨胀,而出版商不仅没有去想办法满足这样的需求,反而让人们在这种时代背景下他们想要的内容。  这就像是为了解决那个乱丢纸巾的问题而把垃圾筒移到离门更远的地方。  并不是所有的盗版都意味着销售损失:很多盗版事件不带任何盈利目的,但不管多么难盗版,他们还是照做不误。对这样的现象不必过于担忧,因为没有人能够阻止,所有用来阻拦的措施通常都是进行限制,造成不方便,让人受挫,惹得付费用户生气。  有的人都合法的获取出版物,即使是很容易盗版——当合法的获取变得很的时候。(现在的音乐市场就是这样的一种情形。)  为了回复 Oatmeal 的漫画,芝加哥太阳报的 Andy Ihnatko 给了一个很好的:很多非法下载的人身上一个共同的特征就是他们自以为是的认为拥有这样的特权。 …这世界并不欠你一部《权力的游戏》第一季——在你想要的时候,想要的价格上,想去花钱买的时候。如果它不能 100% 的满足你这些要求,你有一个自由而明确的选择:不要它们。  Andy 说的没错。但这解决不了问题。  指望通过大声嚷嚷什么是,这对于传媒产业来说不是一个适用有效的途径。这不管用。不切实际,太天真的期望每个人都能做“正确”的事,而放着一个对很多人来说更简单,更快捷,更廉价,更好的方法置之不理。  最适用的方法是顺应需求。

分类:兴趣

时间:2016-04-08 02:04:02