| fox's profile如果记忆醒来PhotosBlogLists | Help |
|
|
小小的开心一下睡觉之前看到http://zn.sj.91.com/content/2009-07-02/20090702221605357,4.shtml。 希望这不是公司出钱弄的,看着这个排名每天上上下下其实也挺有乐趣的,亲手做的东西那么多人在用(传闻有20多万了?),让我小小的膨胀一下吧,哈哈 这次加了很多其实用户不喜欢的东西,激活啦,订购啦,没办法,公司毕竟要靠这个挣钱的,不能作慈善家,但是只要不作恶,用户有得选择,就比什么都好? 很多用户很可爱的啊,也很聪明,有过很多用户写信问一些问题,其实无非就是安装的居多,手机上的软件安装成功了,第一次运行正常,后续基本问题不多了,这次为了兼容ipod touch(几个用户写信说原来ipod touch可以用,后来就不行了,有点声讨的意思了,哈哈),我特意把一些模块动态加载,他们学聪明了,知道把sim卡抽走,让我检测不到......泪奔 这个项目算是大部分都是业余时间在做,玩的性质大于工作,但更多的学到了很多东西,更重要的是走进了用户里面,用户说质量一直没有太多提升,其实cpu占用大规模下去了,原来70%多,现在才50%不到,应该还是有很多优化空间的,至于订购和激活带来的问题,主要这次是游客看的居然比激活后的用户节目更不受限制?的确有点荒唐啊,下个版本应该更鼓励用户激活,用户的行为分析比公司短期的利益更重要。 iphone系列短信发送和截获在党和人民的关怀下,在ida强大的支持下,今天终于把3.0的短信截获搞定了. 一路心酸的很啊,apple居然空了2个函数放那里啥也不干,却又定义了两个消息,3.0整个短信机制改变还是很大很大的..... 测试结果早上睡了一觉起来,突然想起我的IPhone已经刷成3.0,是不是因为这样才不行阿,又降级刷回了2.21. id server = CTTelephonyCenterGetDefault(); id msg = CTSMSMessageCreate(nil,@"+861382323XXXX",@"fuck you ,pangzi"); NSString *address = CTSMSMessageCopyAddress(NULL, msg); NSString * text= CTSMSMessageCopyText(NULL, msg); id result=CTSMSMessageSend(server,msg); 联机调试还是么有成功,又想是不是权限问题呢,直接copy到/Applcation下面,ldid一把,运行,我靠,成功了! 去死吧,at命令!! IPhone短信相关部分研究短信发送和截获 方式一: 打开/dev/tty.debug使用AT命令操作,这类代码最早的出现在一些开源项目中,改改基本能用,现有的版本用的就是这种方式。 缺点:机器必须破解并必须安装到 /Application ,IPA安装方式无法使用,应该是权限的问题。 不太稳定,速度有点慢,也可能是我代码写的有问题,这类代码code.google.com上可以找到,就不贴出来丢人了; 方式二: 直接使用apple的私有库来(CoreTelephony)操作,其实有人已经弄出来了(别问我是谁啊,我不知道反你们的软件是不是非法啊),可是你别指望在网上找到任何资料,我用ida看了2天还是没有弄出来,反而3.0的sdk拿到手立马搞定了3.0的短信发送。 缺点:唯一的缺点就是你不知道什么时候apple又修改了api,私有的api不需要对你承诺兼容性,还有一个缺点就是appstore的签名可能会有麻烦; 1.x、2.x、3.x的iphone应该都能支持的方式,随便定义个头文件,把下面的copy进去,同时主要加入CoreTelephony framework extern NSString* const kCTSMSMessageReceivedNotification; id CTTelephonyCenterGetDefault(void); int CTSMSMessageGetRecordIdentifier(void * msg); id CTSMSMessageCreate(void* unknow/*always 0*/,NSString* number,NSString* text); void* CTSMSMessageSend(id server,id msg); NSString *CTSMSMessageCopyAddress(void *, void *); /*还有很多API,比如说挂机的啊,拨号的啊,获取iccid,imsi,cell id,bootload\fireware版本的啊,暂时用不上,就没有一一弄出来哦*/ 获取IMSI号码: NSString * imsi= CTSIMSupportCopyMobileSubscriberIdentity(/*nil*/); 获取SIM卡状态: NSString * simStatus= CTSIMSupportGetSIMStatus(); 截获短信(3.0暂时已经失效): void SmsCallBack ( NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSLog(@"address = %@,text =%@",address,text); } id server = CTTelephonyCenterGetDefault(); 发送的代码应该是(难道我弄错了么?为什么发送不成功): id server = CTTelephonyCenterGetDefault(); id msg = CTSMSMessageCreate(0,@"10086",@"fuck"); apple在iphone 3.0在短信方面做了很大程度的修改,同时也让我看到了他们开放sms方面sdk的打算,现在有了一个ChatKit,ClassDump下来貌似很复杂,我还是ClassDump了一下他的CoreTelephony,惊喜的发现里面多了很多obj c的class,修改了一下大致是下面这个样子,也是随便找个头Copy进去就可以用: @interface CTMessageCenter : NSObject + (id)sharedMessageCenter; @end 从接口上来看,发送,截获应该都可以搞定,还能支持彩信 发送很简单: [ [CTMessageCenter sharedMessageCenter] sendSMSWithText:@"1111" serviceCenter:nil toAddress:@"138XXXX0610"]; 截获很诡异的,我不知道他是怎么通知的,看里面的代码应该最终还是用了CTTelephonyCenterAddObserver,我在想从这个类派生一个能不能截获呢?有待测试。 顺带提一下,ida反出来的arm代码还是很郁闷啊,关键是没办法跟踪调试,CTSMSMessageSend肯定是可以发送的,而且就是2参数,神啊,help me?! 再顺带的提一下,难道IPhone不开放sms 的api是担心中国的sp同学们么?还是商业模式上卡死一个付费渠道? |
|
|