我登录了新盛富app软件有问题吗

登录后方可回复
@再见二丁目 : 而且并没有重写导航控制器,也没有重写导航控制器的动画效果。所以出现这种情况,大概会是哪里出现了问题
登录后方可回复
登录后方可回答ios7.0结合storyborad实现页面跳转的总结 - 女儿3岁了还是要继续钻研技术 - ITeye技术网站
折腾了一整天,本文总结一下ios7.0页面跳转有关的内容
storyboard的潜规则
我接触ios很晚,环境已经是xcode5+ios7,所以对以前的IOS开发模式并不了解。在网上查阅了很多资料,发现以前的代码,很多都需要自己coding来创建ViewController,比如:
WTwoViewController *controller = [[WTwoViewController alloc]initWithNibName:@"WTwoViewController" bundle:nil];
[self presentViewController:controller animated:YES completion:nil];
但是用storyboard来管理view controller的话,storyboard会自动处理view controller的初始化动作,所以就不再需要自己coding来创建view controller的实例。在另外一篇博客里看到这句话:
“用过xib的人我相信很多人都会经常用到-presentModalViewController:animated:以及-pushViewController:animated:这两个方法。这种代码在storyboard里将成为历史;取而代之的是Segue”
基于控件的跳转
用storyboard做开发,经常需要拉线,本文不介绍,请看这篇官方文档:
这种拉线,是从button拉到view controller:
这种方式只要点击了这个button,就会自动跳转,不需要写任何代码
直接从controller到controller
这种拉线是直接从View Controller到View Controller:
这种方式已经预先创建了segue,但是还需要手工编码,首先需要给segue设置一个identity
然后写代码来跳转:
// 跳转到bootstrap
- (void) jumpToBootstrap{
[self performSegueWithIdentifier:@"fromWelcomeToBootstrap" sender:self];
这段代码必须写在-viewDidAppear里,不能写在-viewDidLoad里,否则会报一个错误:whose view is not in window hierarchy!
页面之间传值
以前用-presentModalViewController:animated:方法来跳转的时候,一般需要通过delegate等方式来传值,现在一律用segue API就能搞定
在segue发生之前,先会调用当前View Controller的-prepareForSegue:sender:方法,可以在里面做一些处理,比如:
BootstrapViewController* targetController = [segue destinationViewController];// 拿到目标view controller,然后要怎么样都可以了
不过这里要注意的是,似乎不能在prepareForSegue方法里设置destination view controller的view,因为这个时候view还没有被storyboard实例化。不过可以先传参,后面再设置
另外网上看到很多帖子,都说从B回到A的时候如果也需要传值,可以把A设置成B的delegate:
BViewController.delegate =
这里我不是很理解,当从B回到A的时候,也设置一个segue似乎就行了
unwind segue
unwind segue比较特殊,是在目标View Controller里先设置一个action,然后在source View Controller里拖线到exit图标上。这种情况下,除了会调用source的prepareForSegue方法以外,target View Controller的那个action也会被调用。详见:
浏览: 984711 次
来自: 深圳
不错,值得借鉴
赞!!!!!!
请问你装的是哪个版本的oepnssl?
kyfxbl 写道呵呵,不是知识面广,而是瞎折腾浪费了很多时间 ...
哥,我想知道这些你都实现了吗?现在是日IOS平台的push推送机制浅析
我的图书馆
IOS平台的push推送机制浅析
第一部分:Push原理(以下绝大多数内容参考自、图片来自iPhone OS Reference Library)机制简介Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器。APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,下文统一使用该缩写。因 此,整个过程可以分为三个阶段,下面用大家常用的聊天客户端BeejiveIM来说明。(BeejiveIM是一款支持多账户登录的支持Push的 iPhone聊天客户端,支持MSN、Google Talk等)此时Provider为BeejiveIM服务器,我们在 BeejiveIM上登陆MSN,其实软件是先把登录信息发送到BeejiveIM服务器,再通过其服务器来登陆MSN。因此,当我关 闭了BeejiveIM,BeejiveIM服务器会继续为我登陆MSN,此时如果有人对我的MSN账户发送了消息,那么就会触发Push。此时:第 一阶段:BeejiveIM服务器把要发送的消息、目的iPhone的标识打包,发给APNS。第二阶段:APNS在自身的已注册Push服务 的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。Push认证许多朋友说Push不能用。其中一大部分,就是在认证阶段就出了问题。想了解原因?请细 看:这里所说的认证机制,实际上包含两层。一层是物理连接上的认证,另一层则才是涉及到iPhone 设备令牌的认证。物理连接上的认证:SSL/TLS链接(如果你了解TLS,那么这里我几乎无需介绍。)iPhone在开启Push的时候,会连接 APNS建立一条TLS加密链接。每一台正常的iPhone都有一个独有的设备证书,而APNS也有一个服务器证书。两者建立的时候,会验证彼此的证书有 效性。TLS链接一旦建立,在没有数据的情况下,只需要每隔15分钟进行一次保活的握手,因此几乎不占流量。而 一旦因为意外原因导致链接中断,iPhone会不断重新尝试建立TLS链接,直到成功。更高一层次:基于token(令牌)的认证在机制 简介里,我提到过APNS判断Push推送消息该发给哪台iPhone的依据是一个“目的iPhone的标识”,这个 标识就是device token(设备令牌)。设备令牌是怎么生成的呢?是每次建立TLS 连接时,APNS通过前一层次(TLS层)里我们提到的每台正常的iPhone唯一的设备证书(unique device certificate),并用令牌密钥(token key)加密生成的。在令牌生成了之后,APNS会把设备令牌(device token)返回给iPhone,而对应的Push应用程序(如BeejiveIM),则把返回来的设备令牌(device token)直接发送给Provider(如BeejiveIM服务器)。这样,当Provider有Push消息要发送时,就会把对应 帐号的设备令牌(device token)和消息一起发送给APNS,而APNS再依据设备令牌(device token),找到相应TLS链接的iPhone,并发送相应的Push消息。以上复杂的流程可以归纳为下面这幅图:图中,Client App是iPhone上的Push应用程序。(图中缺了一条(当有Push消息时)由Provider到APNS的链接)最重要的部分——每台 iPhone独有的设备证书和密钥的来历正常的iPhone刷系统之后,是没有设备证书和密钥的。这就是为什么iPhone会需要连接到 iTunes上进行激活——激活过程中,Apple会分配给每台iPhone独一无二的设备证书(device certificate)和密钥(key)。以上我仅仅介绍了从iPhone到APNS的链接建立。其实从Provider到 APNS也有一条TLS链接,但是与本文关系不大,所以不多加介绍了。我的PUSH问题出在哪里?相信许多同学都抱有这样的疑问。正 如上文提到的,iPhone的Push需要APNS生成对应iPhone的设备令牌,但生成这个令牌又需要iPhone上的有效的设备证书(device certificate)和密钥(key),但是:iPhone OS 3.X 使用blacksn0w进行解锁的 过程,是不经过iTunes的,而blacksn0w本身又不生成对应的设备证书(device certificate)和密钥(key),因此这样解锁完的iPhone根本不可能与APNS建立任何的TLS链接,Push自然废 了。有关各种pushfix补丁要修补这个问题,唯一的办法就是重新生成唯一且有效的设备证书(device certificate)和密钥(key)。但是要知道,证书是需要机构签发的,自己一个人随便弄的一个证书,只会被APNS 认为是无效证书。(SSL证书一个多少钱大家可以去查查)并且对应的文件似乎还和iPhone本机的一些内容相关,不是直接制作好的文件放进去就 可以的。于是,最早,dev team推出了一个测试版补丁,Push fix by dev team(通过他们的twitter发布的,因此官网没有消息)。这个补丁初期很有效。但是仅在iPhone 2G上比较正常。之后某人士发布 pushfix 1.0了。由于使用了不同的生成方法,因此在新版本iPhone上也正常工作了。于是风靡一时。然而,以上两个 补丁都有严重的隐患——他们使用了一个固定的证书作为设备证书(device certificate)。因此在不同iPhone上的区别仅仅在于生成的密钥(key)不同。(待确认)上面提到 过,APNS依靠每台iPhone独一无二的设备证书(device certificate)和密钥(key)来生成独一无二的设备令牌(device token),用来标识每台iPhone。但当多个iPhone的设备证书(device certificate)完全一致时,就存在一定几率使得多个iPhone获得相同的设备令牌(device token)而 随着这两个补丁的使用人数不断增加,使得出现获得相同设备令牌(device token)的iPhone数量大大增加了。当 这些相同设备令牌(device token)的iPhone上启用了同一个应用程序的Push的时候,就极有可能出现彼此间的Push串发的现象。——如某论坛目前N多人抱怨QQ的 Push到别人iPhone上的情况就是如此。之后,Pushfix的作者,声称自己可以为每台iPhone手 工制作唯一的设备证书(device certificate)和密钥(key),并且开始提供了付费服务,并且最终推出了付费的 Pushfix 2.0——其通过cydia安装的原理是,在安装的时候在线连接到pushfix站点检查对应iPhone的imei确定是否付费再自动下载对应的证书。虽 然不知道他是怎么制作这些证书的。但是经过晓晓的验证,他制作的证书确实是有效的。Push问题确实修复了。在这之后,某论坛上出现了一个叫做 Pushfix_D的补丁,声称无需付费也能直接修复问题。然而,——考虑到一些情况,我决定把对Pushfix_D的判断用英文发出来。当然, 制作者肯定很清楚下面写的东西:)it contains the same released push keys from back in July 2009.&&Everybody gets the same key, so it is going to have all the same problems of ALL the free push fixes.&&Push isn’t going to work very long and it is going to drain your battery.其他出错的情况我的iPhone在 cmwap下无法push?!对的,这完全正常。在wap网内,TLS链接几乎无法建立成功。我的iPhone在Wi-Fi下无法 push?!实际上这得说是iPhone与某些无线路由器的不兼容。如果无线路由器开启了DNS转发功能,那 么很有可能你的iPhone无法成功与APNS服务器建立TLS链接。解决方法:关闭无线路由器的DNS转发功能,手动为iPhone的 Wi-Fi连接设置DNS为8.8.8.8补充,实际上,这也就是为什么iPhone连接到Wi-Fi上而又不能收到Push的时候,会变得发热 且非常耗电。因为iPhone会不断尝试建立TLS链接。如何得知我的Push是否破解成功?一个简 单的方法就是安装 Twitbird Pro版本。在其Accounts页面,会显示当前软件的Push注册状况。或者你可以用WinSCP之类 的软件查看iPhone上的/var/mobile/Library/Preferences/com.apple.apsd.plist文 件状态。如果其大小为119字节,则说明该iPhone已经成功取得了设备令牌(device token),并保存在该文件中。如果 小于该大小,则说明该iPhone已经和APNS链接过,但是未能取得设备令牌(device token)。如果没有该文件,那说明该 iPhone根本没能成功连接到APNS。其他一些值得注意的问题iPod Touch与iPhone的Push机制不完全相同,锁屏后15分钟方检查一次。故请勿与上文对号入座。APNS在发送Push消息时,如果发 现对应的iPhone链接中断,则会延后几分钟再发送。超过一个时间后,Push消息会被删除。因此请注意你的网络状况是否影响Push正常工作。如上文所说,每台iPhone的设备令牌(device token)储存在/var/mobile/Library/Preferences/com.apple.apsd.plist 文件中。这就是为什么每次需要重装Push补丁时,建议删除push程序并删除该文件。使用sbsettings的EDGE开关关闭EDGE, 却不关闭Push的话,会导致iPhone不断尝试建立TLS连接,最终耗尽电量。因此,如果你不打算或不能用Push,请关闭Push选项。对软件的Push服务器(Provider)而言,Wi-Fi与手机网络是一样的,在Push处理上不会有任何区别。虽然已经解释的很清楚,但还 是明说一句,只要TLS连接正常,Push服务就是实时的,速度仅取决于Provider而已。题外话,iPhone上的邮件推送为Push Mail技术,与本文所说的Push完全不同。请查阅Exchange Direct Push相关内容。福利一句话,如果你觉得 Push没什么用,那只能说明你见识太少。在以下页面可以查看一些支持Push的优秀软件。内容参考:
TA的最新馆藏

我要回帖

更多关于 软件有问题在哪举报 的文章

 

随机推荐