给App赋予iOS8新特性:Handoff

Features 一.什么是HandOff? 二.开始加入HandOff 1.创建UserActivity 2.废弃一个UserActivity 3.活动被延续之后。。。 4.如何延续一个活动 5.测试效果 总结 说实话看完今年的发布会之后觉得handoff这个功能有些鸡肋,只能说自己目光实在是短浅。。。handoff极大的促进了苹果大生态圈的完成过程,在这之后,除了icloud或者itunes会让你觉得手中的iphone需要一个ipad、apple watch作伴,又会多了一个让你再次剁手购买另一个设备的理由:handoff。 接触handoff是因为之前调研apple watch 的时候发现前台打开iphone上的app不是很可行,按照苹果工程师的推荐,handoff实在是再好不过了,试想一下,用户在手表上想要查看一篇新闻的详细报道,又或者在手表上看新闻图片不是很爽的时候,发现iphone、ipad的左下角有一个icon,滑动解锁之后就会继续阅读,获得更加良好的体验,进可攻,退可守,实在是将用户包围在这么一坨苹果设备之中的上上策。 话不多说,总结一下最近调研、应用handoff在自己应用中的一些体会以及大致领悟一下官方文档的精神报告。传送门:Handoff官方文档 一.什么是HandOff? NSUserActivity 整个handoff 的工作过程围绕着一个叫useractivity的东西展开,顾名思义就是一个用户的活动,我们要控制的是如何定义这个活动,标示这个活动,激活它,废弃它,传输它,更新它,灵活的使用这个对象,就会让iphone、ipad、mac无缝的连接起来。用户可以选择在书写一封回信的时候,去到mac上的邮件应用继续编写并发送;用户可以在iPhone上查看一个喜欢的网页,觉得不够bigger的话,在mac上的dock上打开多出来的icon,就可以在safari中继续自己bigger的阅读。快速,无痛,只需要打开蓝牙,设备都使用同一个apple ID...…

Apple Watch 开发调研三: Glances,Notifications

Features 一.Glances概述(Essentials) 1.Glances 的生命周期(LifeCycle) 2.Glance 界面指南 二.管理Glances的界面 三.Notifications概述(Essentials) 1.短版本 Short-Look Interface 2.长版本 Long-Look Interface 3.增加一个动作按钮在通知中 4.响应动作按钮的点击事件 四.管理Notification的界面 1.配置一个自定义的通知界面 2.配置静态的通知界面 3.配置动态的通知界面...…

Apple Watch 开发调研二:WatchKit Apps

Features 一.Watch App 概要(App Essentials) 1.Interface Controllers 是如何工作的 2.填充故事板场景 3.运行时更新界面 4.国际化我们的界面 二.Interface导航(Interface Navigation) 1.实现层级结构 2.实现分页结构 3.模态视图 三.界面对象(Interface Objects) 1.创建一个界面对象 2.设计的时候配置界面元素...…

Apple Watch 开发调研一:总览

苹果在最近发布了WatchKit,也相应的放出了Xcode 6.2 来让我们练练手啥的,虽然手表应该要等到明年。。。不过这个毕竟是个新鲜的东西,公司也需要调研一下这块儿可以做什么,怎么做,因此通读一边苹果的开发文档显得很有必要了。借着这个机会,总结一下,就按照官方给的顺序和步骤来吧,大致分两到三篇。这篇主要是领会一下官方文档中的总览这一章节的精神。官方文档AppleWatch总览 Features 一: Apple Watch 开发总览 1.Watch App 2.Glance 3.Customizing the Display of Notifications 二.开发开始:配置Xode项目 三.Watch App 整体架构、生命周期、主要方法...…

安静的制造了线上Bug之后的思考

"Creativity is allowing yourself to make mistakes.Art is knowing which ones to keep." Scott Adams 这次版本上线之后,发生了之前我所说过的那个大bug,由于之前没有经历过,当第一次发生之后还是觉得原来一行代码可以带来这么“毁灭性”的打击,周三晚上没忍住去了APP Store上看了一下评论,产品可能自从有了就没有到过现在这种三星的情况吧,给一星差评的特别多,几乎每翻一页都会有人抱怨客户端闪退的问题。熟人报喜不报忧,陌生人好事当做理所应当,坏事可以传千里。 这也是我第一次开发比较核心重要的功能,但也是这一次真正的让我反思了一下我个人开发的习惯问题,本科的时候几乎没有怎么写过代码,本科的毕设也是一页一页学着一本指导书敲出来的,自然贯彻不了书中那些极其规范的代码风格。真正开始自己写代码还是研一的时候,那个时候纯属自己摸索,于是养成了很多坏的毛病,急于求成的想要看到代码运行之后的结果,心想书中运行出来的就是那个结果,什么容错啊,什么查看Api啊,都没有太在意的去养成好的习惯。 其实从八月份开始实习以来,师兄的指导,每次的review都会给我很多建议,我也慢慢的改了一些自己的坏习惯,貌似是不吃一次大亏是不长记性的原因吧,这次还是导致了这么严重的后果,牵连到了负责我的同事,测试的同事,毕竟iOS6模拟器都不存在了,模拟iOS6下的情况实在是很少。只能说还要这次出现问题的只是iOS6的用户,毕竟是少数,如果是目前占大部分比例的iOS8后果不堪想象。。。实在是想象不出来大面积使用客户端的人无法登陆这么一回事儿发生在这么大的公司的客户端上。 今儿下午我们组内的联邦最高法院裁决了我和另外两位同事请组内成员喝饮料,我也安静的执行了这个特色活动,也算是缓解了一下我的内疚吧。。。...…

Today Widget 使用UserDefault导致主程序在iOS6下崩溃

今天一大清早的来到公司就遇到了一个不是很让人开心的问题。。。产品刚刚经过审核,今儿上线了,但是我完成的today widget制造了一个线上bug,也算人生第一次了吧,比较郁闷,但是想想还是长了教训了,谁让我在当时写这个地方的时候考虑不周了呢。。。 BUG起因: Today Widget 中可以和主程序共享数据,方法也有几种,由于我的需求比较简单,我只需要从客户端拿到用户的用户名就可以了,所以我选择了相对比较简单的NSUserDefaults这种方法,我的基本思路就是在程序初始化用户的时候记录一个用户名,记录在主程序和扩展的共享数据中,当注销用户的时候再将这个用户名销毁,就是这么简单的一个思路。。。 BUG再现: 因此我写了两个方法,- (void)saveUserNameForTodayWidget用来存取用户名给widget- (void)clearUserNameForTodayWidget用来销毁用户名。首先在存取的方法中,我一开始是这么书写的: - (void)saveUserNameForTodayWidget { //登陆成功之后将用户信息保存给today widget NSUserDefaults *todayWidgetUserDefault = [[NSUserDefaults alloc]...…