唐巧的博客

唐巧的博客

记录下自己学习的点滴

关于IAP的破解

介绍

大概在今年7月份,有俄罗斯黑客破解了苹果的应用内付费(In-App Purchases),设备在不越狱的情况下就可以免费获得来自苹果官网App Store里应用的收费道具。受影响的产品众多,包括著名的Angry Birds,切水果,Mega Jump, Pandora等。这里有一份受影响的著名的游戏应用列表。

正常的越狱行为还是比较复杂的,需要下载破解软件,并且操作进入DFU模式,所以大部分人并不能够方便地越狱。但该方案不需要越狱就可以破解应用内付费,给用户实施该行为提供了方便。

iOS应用内付费(IAP)开发步骤列表

前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作。步骤繁多,在此把开发步骤列表整理如下。因为只是步骤列表,所以并不含详细的说明教程,需要看教程的新手,可以看我附在最后的一些参考链接。

让Xcode的 stack trace信息可读

昨天在写 iOS 代码的时候,调试的时候模拟器崩溃了。异常停在了如下整个 main 函数的入口处:

int main(int argc, char *argv[])
{
@autoreleasepool {
// 异常停在了下面这行,毫无提示作用
return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyClass class]));
}
}

改进iOS客户端的升级提醒功能

功能设计

先申明一下,我是码农,不是一个产品经理,但我觉得现有市面上的很多 App,设计的 “升级提示功能” 都不太友好。在此分享一下我的想法,欢迎大家讨论。

这些 App 包括:新浪微博、网易微博、网易新闻客户端以及大部分带有升级提示功能的 App,所以我觉得这个问题还是挺普遍的。对于该问题,一句话描述起来就是:“这些 App 都会在用户刚刚使用它的时候,提示有新版本,让用户去 AppStore 上下载最新的版本”。下面是某个应用的升级提示截图:

为什么我认为这是一个糟糕的设计呢?因为用户刚刚打开你的 App,明显就是想使用你的功能。例如刚刚打开新浪微博,可能就是想看一下最新的消息或回复。刚刚打开网易新闻客户端,可能就是想看看最新的新闻。这个时候,你告诉用户有新版本,是想让用户暂时放弃使用该 App 吗?我不知道有多少用户会去点 “升级” 这个按钮,反正我每次看到这个提示都很郁闷,因为我如果点了,我就暂时不能使用该应用了(升级时原版本的 App 是无法使用的)。所以我在想,这个提示升级的时间能不能做得更友好一些?

在MacOS和iOS系统中使用OpenCV

前言

OpenCV 是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。

最近试着在 MacOS 和 iOS 上使用 OpenCV,发现网上关于在 MacOS 和 iOS 上搭建 OpenCV 的资料很少。好不容易搜到些资料,却发现由于 OpenCV 和 Xcode 的版本更新,变得不再有用了。有些问题费了我很多时间,在此总结分享给大家,希望后来人少走些弯路。

可以预见到,随着 Xcode 和 OpenCV 的版本更新,本文可能不再有效了。

所以特此注明,文本介绍的搭建方法仅针对于 Xcode4.5.1 和 OpenCV 2.4.2 版本。

(2013-6-22)更新: 我在 Xcode4.6.2 和 OpenCV 2.4.5 版本的时候重新进行了一次环境搭建,以下内容做了相应调整,应该也是有效的。

粉笔网的架构和项目管理
10 月 10 日,在 CMDN 炫姐姐 的邀请下,我们粉笔网团队通过 CSDN 的 CMDN Club, 对外进行了第一次 技术分享。分享的内容主要包括 2 部分: 第一部分是关于粉笔网使用 ...
谈谈我的创业感受

5 个程序员,3 个多月时间,30 多万行代码,1000 个 bug,只为打造卓越产品。

开发历程

先简单介绍一下产品。我们的产品叫 “粉笔网”,这是一个新颖的学习社区。我们公司的创始人是前网易高管 李勇。我们团队从 4 月份开始筹备,5 月份开始工作,整个开发历经 3 个多月,其中网站于 8 月 28 号顺利上线,iPhone 客户端Android 客户端 于 9 月 8 日顺利通过审核上线。

用脚本来简化iOS美术同学的工作

问题

我们知道,在 iOS 开发中,为了使我们的 app 能够同时支持 iPhone 的 Retina 屏幕和普通屏幕,美术同学需要对 UI 设计稿中的每个元素进行 2 次切图。苹果要求对图片元素的命名分别为 name.png 和 name@2x.png,带 @2x 的表示是 Retina 屏幕的贴图,不带 @2x 的同名文件为普通屏幕的贴图。

我在开发的时候发现很难要求美术同学按照开发的要求来对图片命名。她们通常对于切图的命名是例如 * 登录按钮大 .png* ,* 登录按钮小 .png*, * 登录按钮按下大 .png* * 登录按钮按下小 .png* 这样的形式。于是,对这些文件按照苹果的要求进行重命名就成了我这个码农的一个体力活。

Objective-C的新特性

苹果在今年的 WWDC2012 大会上介绍了大量 Objective-C 的新特性,能够帮助 iOS 程序员更加高效地编写代码。在不久前更新的 Xcode4.4 版本中,这些新特性已经可以使用了。让我们看看这些新特性有哪些:

封装同步的UIActionSheet

问题

做 iOS 开发的同学想必都用过 UIActionSheet。UIActionSheet 可以弹出一个选择列表,让用户选择列表中的某一项操作。使用 UIActionSheet 非常简单,以下是一个简单的示例代码:

- (void)someButtonClicked {
UIActionSheet * sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"ddd" destructiveButtonTitle:@"aaa" otherButtonTitles:@"bbb", @"ccc", @"ddd", nil];
sheet.destructiveButtonIndex = 1;
[sheet showInView:self.view];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
int result = buttonIndex;
NSLog(@"result = %d", result);
}

但我个人在使用时,感觉 UIActionSheet 有以下 2 个问题:

avatar
唐巧
一个中年程序员,正在努力学习做业务