FALLHUNTER

Web & Mobile, Design & Code

IPhone WebApp 设计开发工具与资源

 

/*
做IPhone相关的开发也有一阵子了,过程中使用了不少来自互联网的各种工具与资源,在这里整理一下,希望能将互联网给我们的帮助再回馈给互联网,感谢互联网,当然,要先感谢祖国
*/

IPhone 的 App 固然有很多吸引人的地方,然而Web毕竟是大势所趋,已经有越来越多应用用 WebApp 的方式来实现了。所谓 WebApp,说白了就是Web应用而已,只不过是专门对手机尤其是IPhone的特点来定制界面,更有甚者,把界面做的跟本地IPhone App一摸一样,以至于我们都难以区分它是一个App还是一个Web。

优秀的WebApp

先来看看各种漂亮的WebApp,除了用IPhone上的safari里面的默认书签,进到IPhone 的 WebApp 列表 http://www.apple.com/webapps/, 还有不少地方能看到WebApp的展示,如http://cssiphone.com/  汇集了各种优秀的IPhone站点,这些优秀的CSS设计可以给你不少灵感

IPhone 设计素材

WebApp开发框架

IPhone App第三方库

其他IPhone资源站点


添加评论

使用 python/django 发送iphone push消息

 

iphone的push notification功能是个好东西,可以在一定程度上模拟后台运行程序的效果。但这个东西配置起来确实有点麻烦。好在apple的文档说的还算详细,仔细按照文档做,慢慢生成那一堆配置文件吧。

服务器端的配置:

在开发mac上,从keychain中将生成的keyexport出来,这里要注意要同时选中对应cer与private key两个项目,一起倒出到一个.p12文件中。

将倒出的p12文件放到服务器上,将p12文件转换为pem文件:

openssl pkcs12 -in cred.p12 -out cert.pem -nodes -clcerts

然后,按照 APNSWrapper 里的文档就可以测试了,随便使用一个token,如果没有异常就说明认证OK啦, APNSWrapper 真是个好东西。

感谢互联网,感谢Python~~~

参考资料


添加评论

实现自适应高度的 UITableViewCell 或 UILabel

 

在iphone开发中处理table时常常会有这样的问题,table中cell的高度不是固定的,而是是根据其中的内容不同而不同的。对与这种情况,sdk本身并没有很好的支持,经过一翻摸索,发现大家通常的做法都是在实现 heightForRowAtIndexPath 方法时,根据内容计算出来显示的高度。

幸运的是,nsstring内置了几个好用的函数可以方便的计算出来字符串被现实出来时占有的屏幕高度:

  • - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size; 
  • - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size  
             lineBreakMode:(UILineBreakMode)lineBreakMode; 
  • - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width  
              lineBreakMode:(UILineBreakMode)lineBreakMode; 
  • - (CGSize)sizeWithFont:(UIFont *)font  
              minFontSize:(CGFloat)minFontSize  
              actualFontSize:(CGFloat *)actualFontSize  
              forWidth:(CGFloat)width  
              lineBreakMode:(UILineBreakMode)lineBreakMode; 

 

参考资料


添加评论

如何学习iphone开发

/*
且不讨论这个post算不算是tutorial,反正fallhunter还很少写这种纯技术的post。
首先,这并不是
Don’t write tutorials 中所说的tutorial
本文的起因,不过是因为:fallhunter记忆力严重衰退,刚刚解决过的问题转眼就忘了,更别说记住那一大堆url
整理在post里算是个好办法
*/

官网

其实,无论学习什么技术,最开始要去的地方就是它的官方网站,只有在这里,你才能得到最真实最权威的信息。iphone开发的官网为http://developer.apple.com/iphone/, 你最好使用一个safari 浏览器,这里的网页,只有在safari下面浏览效果才是最好的,我用其他浏览器,不时会出现一些显示或布局上的小问题,不要让这些影响你,就用safari吧。

然而官网上的信息也足够多,从哪里开始。上面不是有个”getting started“么,哈哈。这个时候不要急于开始学习开发,而是要尽多去了解iphone的一些background,iPhone Human Interface Guidelines 是个很好的文章,值得了解。如果你有一个iphone或ipod touch,就更好了,多去使用别人的程序吧。iPhone Development Guide 是整个iphone开发流程的介绍iPhone Application Programming Guide 就是正统的教材了,以它为主,参考官网上的各种 reference,  sample code 等就可以啦!

Mac OS X

从官网的信息你会了解到,要做iphone开发必须有一个mac系统!如果资金还允许,去买一个mac的系统吧,这会省去你很多麻烦。如果你像fallhunter一样穷,只有一个pc,如果你的pc性能足够,你可以考虑安装一个mac的虚拟机,否则,你可以想办法在你的pc上装mac:  mac on pc ,不到万不得已,不要这么干,也许你觉得这样很酷,也许你觉得长知识,可毕竟你的目的是学习iphone开发,而不是破解mac。

Object-C

这时候你已经了解,iphone开发用的编程语言不是c,c++,java 而是object-c。虽然很多地方与c/c++相似,却也有很多地方与其不一样。如果你还分不清楚object-c 与 cocoa 的关系,大致可以这样去想: object-c 只是一个单纯的语言,而cocoa则是用object-c写成的iphone基础类库与框架。如果把object-c比作c++, 那么cocoa 大概可以比作MFC,  再者, php 与 zendframework。

既然object-c是一个单纯的编程语言,你在windows下也可以学习与使用它,一个方法是 http://www.gnustep.org/ , 但是经过我的实验,好像并不支持 object-c 2.0 中的特性,还是尽量用mac吧

XCode

xcode 是mac下的ide,相当于windows下的visual studio,其强大程度有过之而无不及,估计vs抄了其不少特性。在xcode中编码,简直可以乐不思蜀,这也是为什么apple可以做出伟大产品的一个原因吧,它让写代码都很爽!如果你习惯windows开发,可能还想要个msdn,去help里面找吧,里面带有与官网一样的referenc和文档。

第三方库

虽然iphone sdk里面提供了很强大的基础类库,然而总会有不能满足情况的时候,去google一些第三方库,而不是自己从头开发,这会省掉你很多时间与精力。如果不知道用什么,去 http://www.stackoverflow.com 问一下。

回到官网

很多时候,我们在开发中碰到问题,并不是因为rp或传说中的宇宙射线,而是我们没有好好读文档。对iphone开发来说,官网的文档相当丰富,质量也很高,即使你从数百个连接中随便拿个文档来看,也可以快速找到方向。因为几乎每一篇文档都会告诉你谁该读这个文档,在读本文档之前你应该读哪些文档,你还可以读哪些文档来了解更多信息,相关的代码和其他文档有哪些,不要忽略这些内容,熟悉它们,以致熟悉整个官网文档的组织结构,即使遇到问题,也可以快速找到相关的文档。对iphone开发来说, read the fucking manual 同样适用。

关于读文档

虽然写代码的时候只会用到api reference,但是读文档的时候不能只看reference,要多读一些类似guide,overview,discuss之类的文档,把其来龙去脉搞清楚,把背后的思想搞清楚,使用的时候才好灵活确定怎么来用如此多的class和api。要从总体上把握,否则只见树木,不见森林。同时,这也是最省时间的方法,可以节省你写不必要的代码的时间,很多系统的api都有很多个层次,你可以在任何一个层次上开始你的代码,如果你选择了底的层次,则需要自己处理很多的逻辑,重复很多工作,而这些可能系统已经帮你封装到了另一个非常简单的api里


添加评论

mac on pc

本周大部分时间都在试图把osx装在pc上,google>下载>刻录>安装>失败>再google,这才发现,一切的活动都是从google开始,又从google结束,真是离不开google,还是希望google不要“离开”我们,虽然“我们”对google很不好。

mac on pc 的资料、教程几乎到处都是,然而又几乎没有一个能适合你的,只不过是因为每个系统的硬件总有差别,而问题往往都是出在硬件驱动上。所以我也不打算在此写什么教程(主要是懒的写),因为这个过程往往因”机“而异。

首先,你的第一个选择是安装原版mac或安装破解版mac。

如果你的硬件比较主流,并且对mac系统有些了解,能自己处理一些问题的话,可以选择装原版,这种方式最大的好处是升级系统时一般都没什么问题。我没选择这种方式,因为我当时还不知道还能选择装原版,google过程中才发现。

选择装破解版的话,下一个选择就是选择一个破解版本。网络上有很多个破解osx的组织,推出了若干个版本的破解osx,这个我也是google过程中才知道,一开始搞的很晕。比如iatkos,kalyway 我用的是iatkos(没错,也是碰上的),下载了一个,光盘启动没问题,很激动,还以为是一下子就装成功了,后来发现拿走光盘硬盘就不能启动,针对这个问题google了不少,用很多方法没搞定,后来又花一天bt了一个更新版本的iatkos, 重装,ok了,ps/2的键盘鼠标认不出来,回去读readme,才发现安装过程中的custome很重要,要选择相关驱动,于是又重装,选择驱动,终于ok。

然而事情还没完,进入osx,下载xcode,下载过程中断了一下,续传后下完了却无法mount,又google,说是文件损坏的居多,于是重下,这才能mount,没想到osx续传居然会导致文件损坏。

然而事情还没完,iphone3.0的sdk要求10.5.7的系统,我装的是个10.5.5,不支持!于是试图升级系统,实现已经在google过程中得知破解mac升级系统可能会有问题,管不了了,反正死了很多回了,直接升级。升完了,ms ok,重启,键盘鼠标又挂了…… 回去读readme,啊,iatkos10.5.7的版本已经出来了,ms增强了很多驱动,而且可以自由升级! 好像就在这几天,还真是背啊,先bt着,留着做最后的王牌。仔细读了10.5.5的readme才发现,如果ps/2的键盘鼠标想要升级mac,应该选择另外一个驱动,都怪我太性急,没有好好读readme就开始安装了。现在要么等10.5.7的iatkos下完重装,要么用10.5.5的重装后再升级,都够麻烦的。转念一想,既然是驱动不对,能不能修复一下呢,直接用10.5.5的盘在custome里换了驱动,安装在已经升级完成的系统上,祈祷…… OK 成功!

后来,10.5.7的版本下完了,也没有再用,留做纪念吧。如果大家装mac在pc上,一定要用这个版本,我感觉iatkos还是不错的,在我的系统上没有出现很严重的兼容性问题。他们的一个论坛地址是 http://uphuck.ggrn.de/forum/viewforum.php?f=7 目前最新的版本就是这个 iatkos v7, 也就是mac os x 10.5.7. 大家可以直接在bt搜索引擎中搜 iatkos v7 就可以下载了。

目前我装好的mac系统没有什么大问题,声显网三卡均OK,唯一一个没有解决的问题是远程桌面,我需要从我的windows上登录到mac,试了很多种的vnc客户端都不能连接到mac的远程上。而想在mac上装个第三方的vnc server,下了realvnc,但是却无法运行,哪位能支个招?

/*
本文通过作者一次实战mac on pc的经历,阐明了一个一定要仔细读readme的道理。
也跟着纪念一下MJ,20世纪有两个伟大的MJ, pop的MJ与NBA的MJ…
所以我今天去打篮球了,明天要去K那个heal the world
*/


添加评论

© 2009 FALLHUNTER. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.