iphone上daemon进程设置应用的badge(徽章)

来源:互联网 发布:微信mac安装包 编辑:程序博客网 时间:2024/05/16 15:30

  在我们的应用程序中,我们要设置badge(徽章)是一件很简单的事情,系统提供了标砖函数,UIApplication 类的setApplicationIconBadgeNumber函数就可以

但是当我们运行一个后台进程,并且想在后台进程中给前台没有运行的应用设置徽标就没那么容易了,典型的是后台是一个没有界面的daemon,下面告诉你一个实现的方法

 

此方法在4.x上依然是有效的

原理是利用苹果自己的iTunesStore中的函数,这个是一个私有的framework,我们首先要做的是导出其头文件

利用class-dump导出 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/PrivateFrameworks/iTunesStore.framework/iTunesStore

使用的命令如下:

class-dump -H /Developer/xcode_3_2_3/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/PrivateFrameworks/iTunesStore.framework/iTunesStore -o ~/Desktop/itunesstore
上面的意思是将其头文件导出到桌面的itunesstore文件夹下,当然前提是你装了class-dump,否则是没有此命令的

导出后,在/Developer/xcode_3_2_3/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/PrivateFrameworks/iTunesStore.framework下面建立一个Heads文件夹,将导出的头文件中的ISSpringBoardUtility.h头文件放到Heads文件夹下

 

在你的应用中加入iTunesStore.Framework库(这个库是私有的,你要自己定位到它,在系统提供的库中是默认没有的)

给应用加badge如下


ISSpringBoardUtility *util = [[ISSpringBoardUtility alloc] init];
 [util setBadgeString:value forIdentifier:bundleIdentifier];
[util release];

 

其中的value是你要添加的badge中的字符串(可以是数字字符串),bundleIdentifier是应用的标识符,典型的应用标识符是@"com.yourcompany.youapp"

 

 

当然了,你可能需要获取原有的徽章上的数字或者是字符串,需要使用的是下面的函数

 ISSpringBoardUtility *util = [[ISSpringBoardUtility alloc] init];

NSSTring * badgestring=[util badgeStringForIdentifier:bundleIdentifier];

你可以将其转换成数字,这样你就获取了原来的badge上的数字了

原创粉丝点击