标签:ios

浏览模式: 标准 | 列表 | 图文
久未更新,上来发个牢骚

久未更新,上来发个牢骚

不得不说,就目前为止,我MAC下面必装 的软件就是MacJournal了,当然 我这是指工具软件。在没有Onenote的前提下,它是我用到现在最舒服的软件之一,虽然他有很多让我不爽的地方,但好歹,他能够让我记事。

不要和我提什么evernote之类的,它不适合我。

在翻开Macjounral的时候,突然看到了一年前有人留 下的一段话:

我个人推荐学习顺序。
基础部分
一、UIView及其子类 UILabel UITextFiled UIImageView UITextView UITableView [重点] 等等以UI开头的视图
特别需要搞明白UITableView,一通百通。
二、NSObject 子类, 就是NSString NSNumber NSArray NSDictionary == 以NS的类型对象 。
三、对象的@property属性和其涉及的内存机制,ARC虽好,但是我不推荐不懂非ARC。
四、Animation 动画效果,包括UIView提供的动画效果,CA动画效果,CI动画效果,更深层次的3D动画效果。
五、BLOCK和GCD。
正好借着双11的机会买了不少书,终于又可以看起来了。

话说这些年乱看看了不少东西,却没有深入,都是浅尝即止。这次是逼着自己每天必看。每天至少半小时(本想夸海口要1小时或者2小时,想想又不敢保证,但至少半小时还是能抽得出)

转:30秒钟做一个ipa

转:30秒钟做一个ipa

起因来自,有人说我打包的phonegap的APP没有ituneArtwork,于是网上找了下,发现了一篇文章,来自:http://bbs.weiphone.com/read-htm-tid-144479.html

作者说的很简单,3步走即可

1、下载附件里的rar,解压

找到你想要做ipa的*.app,把*.app放入Payload里

用xp自带的记事本编辑Info.plist,找到<string> </string> 把中间的空格填入程序的名字 有4处要改

CFBundleDisplayName下面可以随便填,中文也行,这个是在iphone里显示的名字

CFBundleExecutable下面不能随便填,这是执行名字,也就是*.app下的执行文件名是123,那么这里必须填123

CFBundleIconFile这是iphone里显示的图标,一般*.app文件夹里是icon.png,如果是12b.png,请把CFBundleIconFile下面的icon.png改为12b.png

否则图标显示不正确,但是可以程序运行

CFBundleIdentifier和CFBundleName这个随便填,最好用程序名,比如12b.app 你就在那两个下面改为12b

保存并退出后,把Info.plist放入*.app里

2、把Payload和iTunesArtwork用标准zip格式压缩 在winrar里选择标准zip

iTunesArtwork是一个标准的jpg文件,你给他加个jpg扩展名后就可以打开看了。随便用什么jpg图片都可以,这个是显示在itunes里的图片,与iphone程序的图标无关。iphone程序图标只与*。app里的icon,png有关

iTunesArtwork像素一般要求是512X512.,你要是有兴趣也可以设别的试试

在这里我用的是itunes默认的黑色图标

3、把zip扩展名改为ipa扩展名

ok,ipa程序做好

-----

附件就是那个info.plist和payload的打包

IOS设置横竖屏

IOS设置横竖屏

本标题其实是指在开发中,如何限制自己的APP只能横屏或者竖屏。

在xcode的工程中,目前已经能够选择APP是否使用横屏还是竖屏了,但其实APP还是可以进行横竖屏切换。有几个办法

1、代码法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
//看下面的,自己可以调整,以达到你想要的效果,比如只能横屏显示,只能竖屏显示,或者直接返回YES,表示可以支持任何方向的旋转.
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

当然这段return中其实有很多判断:

return (toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft) || (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight);

//这里是支持哪个方向的转动

return (toInterfaceOrientation == UIInterfaceOrientationPortrait)
|| (toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft)
|| (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight)
|| (toInterfaceOrientation==UIInterfaceOrientationPortraitUpsideDown);

2、其实还可以在代码之外操作:

设置应用程序的横竖屏显示很简单,默认新建的工程,是支持左横屏,右横屏,竖屏三种方式的,若不希望横屏显示,只需要在工程的配置文件中删除掉横屏的两个item即可。

记得在:Supported interface orientations 有三个项的,items0,如果你要固定横、竖屏,记得将items0展开看一下,如果不是自己需要,就删除吧。我在设置横屏的时候,就不需要这个items0。于是将它删除了

ios7试用一周多小记

ios7试用一周多小记

ios出来不少时间了,也从beta1升到了beta2,性能上感觉,也不卡了,终于也有一些话可以拿出来说了,beta1我实在是没什么好说的。。。。

说说特性吧,与ios6相比:
1、控制台可以单独呼出,类似android的管理,不过android是从上面往下呼出,ios从下往上(屏幕上一个向上,一个向下的箭头,看起来好恶心),不过方便是方便了。可以控制声音、亮度、还有快捷开关,还有电筒、计算器、闹钟等小工具;确实方便了很多,比如计算器我就不用再找了(突然觉得就是把下面的4个快捷方式变成了8个)
2、蜂窝管理:可以针对APP使用蜂窝数据,可以屏蔽某些APP用手机流量,很不错
3、照相的速度快了很多,增加了一个正方型的照相,以前打开HDR的时候,拍张照要等半天,现在就和以前一样快了,不知道是从哪里优化的。。。还是说因为支持了多进程,把它扔在后台而不影响拍照了?
4、APP更新自动下载。这个功能比较有意思,也比较方便,最起码你在无线的时候你就不用关心APP是否在更新,它会帮你悄悄的更新完了,如果。。。你用苹果皮带的无线功能,估计你会哭。。。(中国移动推出的td-scdma的苹果皮,我就是在上面吃药了,流量一下子超了200多M,看了下,还好,我都没有大型 APP,可就算更新一个淘宝,TMD也要40多M啊)
5、spotlight,原来是单独一屏,现在也没有了,只要在主界面手指下划,在顶部就会出现一个搜索框。感觉有点卡,不如以前的单独一屏。。。但方便是方便了
6、输入法更新了。原来的笔画输入,连丁、士这类词都打不出,只能用拼音,现在。。。。都可以输入了,听说要开放输入法API,但估计不太可能。。。
由于一些其他界面的东西,官网上、各种各样的网站都有说明,所以我这里就不多说了。。。
一些小问题:
1、微信,发表图文的时候,只能选择拍照。其他功能都会有小问题:长信息展开不正常,从相册选择照片不正常,文字信息看不到第一行等等。其实也就是朋友圈有各种小问题
2、锁屏的时候,桌面图片好象会有切边,不太好看
3、接电话的时候,偶尔会突然打开扬声器,有几次差点吓死我。。。
小瑕疵,可以忍受。
当然如果你要刷回去,可能是有点问题的,听说苹果已经不允许刷回6.1.2了。考虑一下再说哦
关于APNS的一些事(是以前的补充)

关于APNS的一些事(是以前的补充)

在之前也写过一些关于apns的事情,不过都没有深究。都是抄抄改改,写写弄弄,近日 在与人讨论时,人说纯中文可以发76个汉字左右。当时我就想了,这不应该啊。apns总长度不能超过256字节,76个汉字。json_encode一下。一个汉字8个字节,早就超了不知道多少了。还要组成payload。。难道不超吗?

然后看了一下别人的函数,原来是用了一个自定义的json_encode。看了他的自定义json_encode之后,突然想起,风雪之隅在他的博客上提到过,5.4的json_encode加了一些参数(参考: 让Json更懂中文(JSON_UNESCAPED_UNICODE)),于是看了一下。json_encode($str,JSON_UNESCAPED_UNICODE)。计算下来的长度与那个自定义的json_encode一样了。

自此,记录下来。推送的时候也可以多推几个汉字了。(仅限php5.4,之前的版本还是网上找自定义的json_encode函数吧,关键字:中文自定义 php json_encode ,或者直接看:http://yige.org/p/458)

早期关于APNS的文章 :

dayone

dayone

一咬牙,买了一个APP:day one。用下来实在感觉是不错。所以才买的。。。
dayone的mac app的icloud的同步确实 有点麻烦。后来我没辙。选择了dropbox来进行同步。太悲催了。
icloud同步请参考:
http://dayoneapp.com/support/icloud/

dropbox同步请参考:
https://dayone.zendesk.com/entries/21984318-how-do-i-setup-dropbox-syncing

后记:
TNND,原来是破解版对icloud的同步做了限制,换成了正版就好了。一下子100块没了。mac上68,ios上30.
至少,我目前觉得还是物有所值。每天做了哪些事情都记录下来了。。。很好。很蛋定

转:智能APP的Banner

转:智能APP的Banner

这是最近的一个小热点,即在网页的meta里加入一行代码:<meta name="apple-itunes-app" content="app-id=1234567890"/> ,红色区域就是你的APP的ID
不知道,有两个APP的情况下,即加入两条的时候会怎么样?
不过,目前该功能只支持Safari,而且是IOS上的Safari,看来IOS6中,对safari加了好多功能啊。

记录下这个,也是做个笔记。

IOS6,我是升呢还是不升呢

IOS6,我是升呢还是不升呢

IOS6的改动列表非常大,你说我是升呢还是不升呢?
因为IOS我还是越狱了,为了两个软件:1、issh,太贵了,不过这个可以买;2、zephyr,这个APP好啊。。。直接iphone支持手势了(否则只有IPAD支持)
刚才一下子看到itunes给的升级列表,我就复制了下来。。。。好纠结,你说我该不该升?升的话,HOME键就又得拼命按了。
iOS 6 软件更新

本更新包含超过 200 项新功能,其中包括:

• 地图
◦ Apple 设计的基于矢量的地图
◦ 在 iPhone 5、iPhone 4S、iPad WLAN + Cellular(第 2 代和第 3 代)上实现带语音提示的路线规划导航
◦ 实时交通路况信息
◦ Flyover 在 iPhone 5、iPhone 4S、iPad(第 3 代)和 iPod touch(第 5 代)上将主要城市区域以照片般真实的互动式 3D 视图呈现
◦ 本地搜索结果附带 Yelp 照片、评分、评论和优惠信息
◦ Siri 集成到获取路线和查找沿线地点的功能中
• Siri 改进
◦ 运动:棒球、篮球、橄榄球、足球和冰球比赛的比分、球员技术统计、赛程、球队阵容和联赛排名
◦ 影片:预告片、上映排期、评论和剧情介绍
◦ 餐馆:预订、评论、照片等信息
◦ 发送推文
◦ 发布在 Facebook 上
◦ 启动应用程序
◦ 在支持的车型上实现免视导航 (Eyes Free)
◦ 支持 Siri 的国家/地区都可以使用本地搜索功能(推出初期,可用性可能受限制)
◦ 更多国家/地区及语言支持:加拿大(英语和加拿大法语)、中国(普通话)、香港(粤语)、意大利(意大利语)、韩国(韩语)、墨西哥(西班牙语)、西班牙(西班牙语)、瑞士(意大利语、法语和德语)、台湾(国语)以及美国(西班牙语)
◦ 支持 iPhone 5、iPhone 4S、iPad(第 3 代)和 iPod touch(第 5 代)
• Facebook 集成
◦ 在“设置”中单次登录
◦ 从“照片”、Safari、“地图”、App Store、iTunes、Game Center、“通知中心”和 Siri 直接发布
◦ 给任意发布添加位置信息和选择观众
◦ 在“通讯录”中查看最新的 Facebook 个人主页照片和联系人信息
◦ 在“日历”中查看 Facebook 事件和生日提醒
◦ 称“赞”内容和查看朋友们在 App Store 和 iTunes Store 中称“赞”的内容
• 共享的照片流
◦ 将选定照片共享给您选择的人
◦ 朋友们可以在“照片”应用程序、iPhoto 和 Apple TV 中查看共享的照片
◦ 朋友们可以称“赞”并给单独的照片添加评论
• Passbook
◦ 集中管理登机牌、购物卡、电影票和其他凭证
◦ 以条形码显示用于登机、购买咖啡、去影院看电影等活动的凭证
◦ 凭证会根据时间或位置显示在锁定屏幕上
◦ 凭证可自动更新
◦ 支持 iPhone 和 iPod touch
• FaceTime 改进
◦ iPhone 5、iPhone 4S 和 iPad WLAN + Cellular(第 3 代)支持通过蜂窝移动网络进行 FaceTime 通话
◦ 在 iPad 和 iPod touch 上接收拨给您的 iPhone 号码的 FaceTime 呼叫
• 电话改进
◦ “勿扰模式”可让您免受来电和通知的打扰
◦ 拒绝来电时提供“以信息回复”选项
◦ 拒绝来电时根据时间或位置提供“稍后提醒我”选项
• 邮件改进
◦ VIP 邮箱可让您快速找到重要人士的邮件
◦ 有旗标电子邮件的专用邮箱
◦ 编写电子邮件时可插入照片和视频
◦ 打开受密码保护的 Office 文稿
◦ 下拉即可刷新邮箱
◦ 各个帐户独有签名
• Safari 改进
◦ iCloud 标签可看到您所有设备上打开的页面
◦ 离线阅读列表
◦ 照片上传支持
◦ 在 iPhone 和 iPod touch 上支持全屏幕横排视图
◦ 智能应用程序横幅
◦ JavaScript 性能提升
• App Store 和 iTunes Store 改进
◦ 更新的商店设计
◦ iTunes 预览历史记录
◦ 补齐我的整季
◦ 补齐我的专辑
• Game Center 改进
◦ 挑战朋友赢得的高分和成就
◦ 将所获得的高分和成就发布到 Facebook 和 Twitter
◦ 基于您的 Facebook 朋友推荐朋友
• 辅助功能改进
◦ “引导式访问”可将设备限制为使用一个应用程序,或者限制某些屏幕区域上的触碰输入
◦ VoiceOver 与“地图”、AssistiveTouch 和“缩放”功能集成
◦ iPhone 5 和 iPhone 4S 支持“Made for iPhone”助听器
• 增强了“通讯录”、“日历”、“提醒事项”、“照片”以及通过蓝牙共享数据时的隐私控制
• “提醒事项”应用程序中的提醒事项可被重新排序
• 在 iPhone 上自定振动提醒方式
• 适用于 iPad 的“时钟”应用程序
• 以歌曲作为时钟闹铃
• 在“通讯录”中搜索所有字段
• 自动影片模式实现更强的视频声音质量
• 中文、法文、德文和西班牙文的字词定义
• 适用于法文、德文、土耳其文、加泰罗尼亚文、阿拉伯文和冰岛文的全新键盘布局
• 键盘快捷键可通过 iCloud 在设备间共享
• 蓝牙 MAP 支持
• HTTP 全局网络代理
• 中国定制功能

◦ 百度网页搜索
◦ 新浪微博集成
◦ 将视频共享到土豆网
◦ 将视频共享到优酷网
◦ 改进了手写和拼音输入法
• 修正了一些错误

某些功能可能并不适用于所有国家或地区。更多详细信息,请访问此网站:
http://www.apple.com/ios/feature-availability

有关本更新的安全性内容的信息,请访问此网站:
http://support.apple.com/kb/HT1222?viewlocale=zh_CN

小笔记

小笔记

最近在与IOS交互的时候,是由weiview里改变location.href来使得页面的URL产生变化,然后由IOS来截取这些URL信息以达到截获消息的机制。
有人推荐了:https://github.com/marcuswestin/WebViewJavascriptBridge
看了一下,其实也都差不多一样,不过看到FlipBoard的代码中,也还是用location来改变的,但是它也有一个机制,当你用网页打开时,并不会触发Location的变更,所以我在想是否有一种相对比较好的机制,能够使得数据的交互更方便。
抛开上面的例子以及flipboard,这两种其实最终都是用addEventListener来监听和传递,但毕竟要和客户端交互,除了URL其他用什么呢?
我随便想了想,不知道是否正确:
1、localStorage,客户端定时检查localStoage的信息
2、cookie,改变cookie值以获取改变后的值
3、利用Safari的特性,捕获console.log的数据

cookie应该是肯定可以,但是太慢了吧?第三个,有可能,但没有测试过

IOS不再允许使用UDID

IOS不再允许使用UDID

上面一则新闻来自macx,原文地址是:http://www.macx.cn/thread-2041511-1-1.html
iOS设备的设备唯一识别码UDID(unique device identifier),顾名思义就是每个设备只有这一个标识符,与设备硬件相关,是无法更改的。根据报道苹果从本周开始已经开始禁止第三方应用程序使用 iOS设备的UDID,并指出苹果将在下周开始加强设备UDID的隐私保护。

在iOS 5条款中,苹果已经对开发者进行了提醒,使用用户设备UDID是不赞成的并将逐步取缔这一做法。消息称苹果的十个App审核团队中已经有两个开始禁止使用UDID的应用通过审核了,据说下周将增加到四个。

一些第三方开发者表示,如果苹果有明确禁止使用UDID的条款颁布,那他们会按照新标准执行,不过他们还希望看看未来的形式如何发展。无论是开发者还是广告商都将受到新政策的严重影响。

苹果最近被隐私问题腿上风口浪尖,美国国会也几次三番要求苹果解释隐私保护问题,苹果可能也是出于外接压力才进一步紧缩iOS条款的。

如何查看自己iOS设备的UDID:
将设备链接到电脑iTunes,本机信息原来显示序列号的地方点击一下,即可看到标示符UDID信息
----------------
基于上述新闻,于是就有了下面这篇文章,嗯,当然也不是我写的,原文地址是:http://pingguohe.net/2011/08/25/uuid_after_ios5/

iOS5已经发布了6个beta版,除了在用户体验上的提升,对于开发者来说也有很多变化,最大的莫过于对UDID的限制访问。在之前的iOS应用 中,我们一般使用UDID来标记一个用户,基于UUID建立用户数据库。现在,安装了iOS5 beta 6的设备上已经取不到UDID,[UIDevice uniqueIdentifier] 只能返回一个“5.0”了。

取代被禁用的iOS UDID,其实有很多方法,比如,有人建议使用网卡mac,但我不建议使用这种方法,mac地址属于用户隐私数据,我想如果你试图获取用户mac并上传,review通不过。

官方给出的建议是CFUUID:

An alphanumeric string unique to each device based on various hardware details. (read-only) (Deprecated in iOS 5.0. Instead, create a unique identifier specific to your app.)

@property (nonatomic, readonly, retain) NSString *uniqueIdentifier
Special Considerations

Do not use the uniqueIdentifier property. To create a unique identifier specific to your app, you can call the CFUUIDCreate function to create a UUID, and write it to the defaults database using the NSUserDefaults class.

通过CFUUIDCreate创建一个CFUUID对象,存入NSUserDefaults,作为用户身份的唯一标示。

官方对CFUUID对象的解释如下:

CFUUID objects are used by plug-ins to uniquely identify types, interfaces, and factories. When creating a new type, host developers must generate UUIDs to identify the type as well as its interfaces and factories.

UUIDs (Universally Unique Identifiers), also known as GUIDs (Globally Unique Identifiers) or IIDs (Interface Identifiers), are 128-bit values guaranteed to be unique. A UUID is made unique over both space and time by combining a value unique to the computer on which it was generated—usually the Ethernet hardware address—and a value representing the number of 100-nanosecond intervals since October 15, 1582 at 00:00:00.

The standard format for UUIDs represented in ASCII is a string punctuated by hyphens, for example 68753A44-4D6F-1226-9C60-0050E4C00067. The hex representation looks, as you might expect, like a list of numerical values preceded by 0x. For example, 0xD7, 0x36, 0x95, 0x0A, 0x4D, 0x6E, 0x12, 0x26, 0x80, 0x3A, 0x00, 0x50, 0xE4, 0xC0, 0x00, 0x67 . To use a UUID, you simply create it and then copy the resulting strings into your header and C language source files. Because a UUID is expressed simply as an array of bytes, there are no endianness considerations for different platforms.

可以看到CFUUID就是对GUID的一种封装,提供了创建方法和各种各种格式转换的方法。

以下代码是我对CFUUID和NSUserDefaults的封装,可以作为唯一标识来使用。

//
// NewUUID.h
//
// Created by jiajun.gao jiajun.gao on 8/25/11.
//
// Create a UUID by self.
//
// Call like this:
//
// String *iNeedUUID = [NewUUID identifier];
//

#define NEW_UUID_KEY @"uuid_created_by_developer"

@interface NewUUID : NSObject {

NSString *uuid;

}

+ (NSString *)identifier;

@property (nonatomic, retain) NSString *uuid;

@end

NewUUID.m

#import <Foundation/Foundation.h>

#import "NewUUID.h"

@implementation NewUUID

@synthesize uuid;

- (id)init {
self = [super init];
if (self) {
uuid = NULL;
return self;
}

return nil;
}

+ (id)_instance {
static id obj = nil;
if( nil == obj ) {
obj = [[self alloc] init];
}

return obj;
}

+ (NSString *)identifier {

NSUserDefaults *handler = [NSUserDefaults standardUserDefaults];
[[NewUUID _instance] setUuid:[NSString stringWithFormat:@"%@", [handler objectForKey:NEW_UUID_KEY]]];

if (NULL == [[NewUUID _instance] uuid] || 46 > [[[NewUUID _instance] uuid] length]) {

CFUUIDRef uuid = CFUUIDCreate(NULL);
CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);

NSString *result = [NSString stringWithFormat:@"%@-%@", @"new-uuid-", uuidStr];

CFRelease(uuidStr);
CFRelease(uuid);

[[NewUUID _instance] setUuid:result];


[handler setObject:[[NewUUID _instance] uuid] forKey:NEW_UUID_KEY];
[handler synchronize];
}

return [[NewUUID _instance] uuid];
}

@end