在Mac OS的应用程序开发中,有一个非常好玩的东西,就是Growl,相信用过“鸭子”的人都知道,虽然写这个东西不是什么难事,而且也有一些文章,但是实在无奈那些文章写的太不详细,于是折腾了半天终于折腾出来了,现在我就来说一下如何在应用程序中发送Growl消息。
首先,要了解Growl的话,可以去Growl官方网站,我们只需要下载一个Growl库就可以了。
下载完成后,要做的事情很简单,我们首先添加这个库到我们代码中去,直接拖动过去就可以了,不需要添加现有的framework,因为如果添加现有的话,可能会有些奇怪的诡异错误。注意,如果这个地方怎么拖动过去,怎么放到下面都出现了奇怪的诡异问题的话,直接将这个framework放置到/HD/系统/资源库/Frameworks目录下,做全局的资源库,这样就不会出错。
好了,既然我们添加了资源库,我们就可以写代码了,代码很简单,我们在应用程序中,会有一个MainController,我们在MainController里写一些测试代码即可。
#import <Cocoa/Cocoa.h>
#import "Growl/Growl.h"
IBOutlet NSButton *button;
}
-(void) growlAlert:(NSString *)message title:(NSString *)title;
-(void) growlAlertWithClickContext:(NSString *)message title:(NSString *)title;
-(void) exampleClickContext;
@end
#import "Growl/Growl.h"
@interface MainController : NSObject
<GrowlApplicationBridgeDelegate> {IBOutlet NSButton *button;
}
@property (nonatomic, retain) NSButton
*button;-(IBAction)buttonClicked:(id)sender;
-(void) growlAlert:(NSString *)message title:(NSString *)title;
-(void) growlAlertWithClickContext:(NSString *)message title:(NSString *)title;
-(void) exampleClickContext;
@end
上面是MainController,下面是详细的代码,不用我过多解释,自己看就行了,实在不行就下载代码看看。:)
#import "MainController.h"
if ( self = [super init] ) {
[GrowlApplicationBridge setGrowlDelegate:self];
}
return self;
} //按钮按下的时候发送消息
-(IBAction)buttonClicked:(id)sender{
[self growlAlert:@"test" title:@"haha"];
} //定义Growl需要的字典
- (NSDictionary *) registrationDictionaryForGrowl {
NSArray *array = [NSArray arrayWithObjects:@"example", @"error", nil];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:1],
@"TicketVersion",
array,
@"AllNotifications",
array,
@"DefaultNotifications",
nil];
return dict;
} //定义当点击了消息的事件
- (void) growlNotificationWasClicked:(id)clickContext{
if (clickContext && [clickContext isEqualToString:@"exampleClickContext"])
[self exampleClickContext];
return;
} //发送消息
-(void) growlAlert:(NSString *)message title:(NSString *)title{
[GrowlApplicationBridge notifyWithTitle:title
description:message
notificationName:@"example"
iconData:nil
priority:0
isSticky:NO
clickContext:nil];
} //发送可以点击的消息
-(void) growlAlertWithClickContext:(NSString *)message title:(NSString *)title{
[GrowlApplicationBridge notifyWithTitle:title
description:message
notificationName:@"example"
iconData:nil
priority:0
isSticky:NO
clickContext:@"exampleClickContext"];
}
-(void) exampleClickContext{}
@end
@implementation MainController
@synthesize button;
- (id) init {if ( self = [super init] ) {
[GrowlApplicationBridge setGrowlDelegate:self];
}
return self;
} //按钮按下的时候发送消息
-(IBAction)buttonClicked:(id)sender{
[self growlAlert:@"test" title:@"haha"];
} //定义Growl需要的字典
- (NSDictionary *) registrationDictionaryForGrowl {
NSArray *array = [NSArray arrayWithObjects:@"example", @"error", nil];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:1],
@"TicketVersion",
array,
@"AllNotifications",
array,
@"DefaultNotifications",
nil];
return dict;
} //定义当点击了消息的事件
- (void) growlNotificationWasClicked:(id)clickContext{
if (clickContext && [clickContext isEqualToString:@"exampleClickContext"])
[self exampleClickContext];
return;
} //发送消息
-(void) growlAlert:(NSString *)message title:(NSString *)title{
[GrowlApplicationBridge notifyWithTitle:title
description:message
notificationName:@"example"
iconData:nil
priority:0
isSticky:NO
clickContext:nil];
} //发送可以点击的消息
-(void) growlAlertWithClickContext:(NSString *)message title:(NSString *)title{
[GrowlApplicationBridge notifyWithTitle:title
description:message
notificationName:@"example"
iconData:nil
priority:0
isSticky:NO
clickContext:@"exampleClickContext"];
}
-(void) exampleClickContext{}
@end
上面的代码不是很复杂,不过这里只是一个测试程序,点击了按钮之后自动发消息,我们如果要多次使用,需要封装一下,这个封装就很简单了,我就不过多写了。
下载
GrowlTester
= End of buffer =
« 乌龟们的家


载来研究看看
研究一下,看
[...] Mac开发 – 发送Growl消息 [...]