JGuoer
Loading..
RSS Feed

在Mac OS的应用程序开发中,有一个非常好玩的东西,就是Growl,相信用过“鸭子”的人都知道,虽然写这个东西不是什么难事,而且也有一些文章,但是实在无奈那些文章写的太不详细,于是折腾了半天终于折腾出来了,现在我就来说一下如何在应用程序中发送Growl消息。

首先,要了解Growl的话,可以去Growl官方网站,我们只需要下载一个Growl库就可以了。

下载完成后,要做的事情很简单,我们首先添加这个库到我们代码中去,直接拖动过去就可以了,不需要添加现有的framework,因为如果添加现有的话,可能会有些奇怪的诡异错误。注意,如果这个地方怎么拖动过去,怎么放到下面都出现了奇怪的诡异问题的话,直接将这个framework放置到/HD/系统/资源库/Frameworks目录下,做全局的资源库,这样就不会出错。

好了,既然我们添加了资源库,我们就可以写代码了,代码很简单,我们在应用程序中,会有一个MainController,我们在MainController里写一些测试代码即可。

#import <Cocoa/Cocoa.h>
#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"

@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

read more..
= End of buffer =
  1. 评论 由 Firm — 2010年06月30日 @ 4:02 下午 @

    载来研究看看

  2. 评论 由 匿名网友 — 2010年07月20日 @ 2:41 下午 @

    研究一下,看

  3. [...] Mac开发 – 发送Growl消息 [...]

:) 8) :evil: :lol: :-| :oops: :wink: :-D :cry: :idea: 8-O :-? :twisted: more »