iOS8中LaunchImage和LaunchScreen的完美结合

Apple 在 iOS8 中推出了 LaunchScreen.xib 来代替之前的 LaunchImage 作为程序的启动界面,相比与 LaunchImage,在 iOS 设备屏幕尺寸越来越多样的情况下,LaunchScreen.xib 依托 AutoLayout 无疑更方便,否则,对于一个兼容 iPhone5-iPhone6Plus 的应用,就需要有 4 长不同尺寸的 LaunchImage。 但是 LaunchScreen 只有在 iOS8 中才能被支持,所以一些开发者还是选择用传统的 LaunchImage 方式。不过,还有一种方式是将 LaunchImage 和 LaunchScreen 结合,在大尺寸 iPhone 中使用 LaunchScreen(iPhone6 和 iPhone6Plus 都是 iOS8 系统),在 iOS7 中使用 LaunchImage(使用 iOS7 的手机只有 4 寸和 5.5 寸的 iPhone,所以只需要两张图)。 首先进入 Target 配置,找到 App Icons and Launch Images,Xcode6 中默认使用了 LaunchScreen.xib,而 LaunchImage 则没有使用。 接下来点击 Use Assets Catelog,这时 Xcode 会在 Images.xcassets 中生成 LaunchImage,这里我们只需要给 4 寸 Retina 屏和 3.5 寸 2x 屏放两张 LaunchImage 就好了。 ...

十月 25, 2014 · 1 分钟 · Zhiya

创建一个简单的Safari扩展

之前做过一个把网址转为二维码的Chrome 扩展,想在 Safari 中也使用这样的扩展,搜索了一下貌似没有同类型的,所以自己打造了一个 Safari 扩展,并且把过程记录下来。 获得开发者证书 要建立一个 Safari 扩展,首先需要生成一个开发者证书。访问Apple 开发者中心,加入 Safari Developer Program,加入开发者计划是免费的。加入开发者计划后就可以生成证书了,访问Certificates, Identifiers & Profiles,点击右上角的加号,生成一个开发者证书。成功后将证书下载到本地并导入 Keychain Access 中。 在 Safari 中创建扩展 打开 Safari,在菜单中选择Safari—Preferences-Advanced,勾选最下方的Show Develop menu in menu bar,如图。 这时在菜单栏中会出现Develop菜单,选择Develope-Show Extension Builder,打开扩展编辑器,点击左下角的*+,选择New Extension*,保存到一个位置(例如 Desktop)。 这时,Desktop 文件夹中会出现一个demo.safariextension文件夹,这个文件夹里的内容就是我们生成的 Safari 扩展的根目录。如果前面的开发者证书已经正确导入,扩展的介绍里会出现 Safari 开发者的 Id。 编辑扩展基本信息 扩展建立后,下面会有一票东西需要填写,首先填写扩展的基本信息。 Display Name: 扩展的显示名称 Author: 作者名字 Description: 插件介绍 Website: 插件网站 Bundle Identifier: 这里需要填写唯一 id Update Manifest: 这里需要填写一个 plist 格式文件的地址,Apple 会定期检查这个地址中的 Version,如果有升级,就会访问插件的下载地址更新插件,当然,如果插件只是自用而不提交 Safari Extensions Gallery 的话,这一栏可以不填,plist 文件格式如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Extension Updates</key> <array> <dict> <key>CFBundleIdentifier</key> <string>com.zangzhiya.url2qrcode</string> <key>Developer Identifier</key> <string>开发者ID</string> <key>CFBundleVersion</key> <string>1</string> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>URL</key> <string>http://simpleapples.com/images/url2qrcode-safari/url2qrcode.safariextz</string> </dict> </array> </dict> </plist> Access Level: 这里需要选择插件对页面访问的权限,比如我们我们要做的 URL 转二维码插件,需要获取当前 Tab 的 URL,那么这里需要选择 ALL ...

十月 23, 2014 · 1 分钟 · Zhiya

iOS8注册推送失败的探究

Apple 在 9 月 18 日正式发布了 iOS8,在收到更新的同时,也发现自己的应用在 iOS8 下无法启动。 并且在 Console 中收到如下提示: 2014-09-19 16:26:20.369 demo[379:30506] registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later. 查询文档可以知道,在 iOS8 中注册推送的方法registerForRemoteNotificationTypes已经被废弃,文档中是这样描述的: 按照文档中的提示,使用registerForRemoteNotifications方法代替,这个方法不接受参数。紧接着问题就来了,程序在安装过这个应用的 iOS8 机器上可以成功注册,而在新安装的 iOS8 机器上则无法注册,application:didRegisterForRemoteNotificationsWithDeviceToken:和application:didFailToRegisterForRemoteNotificationsWithError:都无法响应,并且在成功注册的机器上,收到的推送消息也没有声音提示。再次查看文档后发现这么一段话: If you want your app’s push notifications to display alerts, play sounds, or perform other user-facing actions, you must call the registerUserNotificationSettings: method to request the types of notifications you want to use. 换句话说,如果要使用推送服务,还需要再调用registerUserNotificationSettings方法,而这个方法是和 iOS7 上的registerForRemoteNotificationTypes方法一样接受参数的。为什么 iOS8 下要把一个方法变成两个方法呢?registerForRemoteNotifications方法的文档中有这么一句话: ...

九月 19, 2014 · 1 分钟 · Zhiya

Air SDK和Flex SDK的区别

最近将 AS 开发的 SDK 从 Flex SDK 4.9.1 升级到了 Air SDK 4.0,导致之前写的一个 FLV 播放器不能播放视频了,最后发现 bug 是一个方法内的变量名和类中的一个 get 方法重名了。类似下图中所示情况: 图中变量 time 和 get 方法 time 重名,而编译器对这种重名的处理在 Flex SDK 和 Air SDK 下是不一样的。 Flex SDK 下,会根据上下文将var time:int = time;中的第二个 time 作为 get 方法,而 Air SDK 中,这行两个 time 会被当作同一个变量,也就是自己等于自己,而 int 类型定义时候会被初始化为 0,所以使用 Air SDK 输出结果为 0,使用 Flex SDK 输出结果为 1000。 看来 Air SDK 不如 Flex SDK 智能啊 :)

三月 27, 2014 · 1 分钟 · Zhiya

Eclipse 4.3安装Flash Builder Plugin

Flash Builder 是一个基于 Eclipse 的 IDE,在 Flash Builder 文件夹下的 utilities 目录下,官方已经为我们提供了插件版的安装程序,名为 Adobe Flash Builder 4.7 Plug-in Utility,插件版可以将 Flash Builder 嵌入到已经安装好的 Eclipse 中,作为 Eclipse 的一个视图,这样就可以在 Eclipse 中开发 AS 程序。 执行插件版安装程序后按提示进行,Eclipse 目前的最新版是 4.3,而 Flash Builder 4.7 的插件版只支持 Eclipse 3.7 或 4.2 版,无法安装在 4.3 中。 解决办法是,下载 Eclipse 4.2,现将 Flash Builder 插件版安装到 4.2 版的 Eclipse 中,再拷贝 Eclipse 文件夹下的 dropins 目录覆盖 Eclipse 4.3 的 dropins。启动 Eclipse 4.3,第一次启动速度会很慢,启动后,Flash Builder 插件版就已经安装到 Eclipse 4.3 中了。

二月 27, 2014 · 1 分钟 · Zhiya