2013年12月8日 星期日

Objective C-OSX Social framework

最近因為在開發公司產品的關係需要寫MAC OSX的app,雖然說跟iPhone上開發差不多,但是有不少小地方不一樣

今天在寫扣的時候被老闆要求需要將公司的網頁PO上FB的塗鴉牆上,剛開始以為要用Facebook的SDK去實現,結果好死不死的Facebook SDK上面都寫著for iOS!!囧~上網查了一下有些人說可以直接import iOS的SDK到project裏面,原本想試試看,但礙于進度壓力,只好先搜尋看看有沒有別人現成的code!QQ!結果找來找去都沒找到,還好很幸運的在youtube上看到有人用Social.framework來完成!這不是我以前學過的嗎XD,只是在OSX上和iOS上有些不同,在OSX上的寫法如下:

1. 首先需要在Build Phases內加入Social.framework

2. import Social.h

#import <Cocoa/Cocoa.h>
#import <Social/Social.h>

//需要使用NSSharingServiceDelegate protocol
@interface ViewController : NSViewController<NSSharingServiceDelegate>

3. PO文到Facebook的code template

- (IBAction)facebookShareAction:(id)sender {
    
    NSSharingService *service = [NSSharingService sharingServiceNamed:NSSharingServiceNamePostOnFacebook];
    service.delegate = self;
    
    NSMutableString *urlString = [NSMutableString stringWithFormat:@"http://www.leaderg.com/mysng/live?s=%@&p=%@",
                                  [[NSUserDefaults standardUserDefaults] objectForKey:@"robotSn"],
                                  [[NSUserDefaults standardUserDefaults] objectForKey:@"share"]];
    
    [service performWithItems:[NSArray arrayWithObject:urlString]];
    
}

4. PO文到twitter的code template

- (IBAction)twitterShareAction:(id)sender {
    
    NSSharingService *service = [NSSharingService sharingServiceNamed:NSSharingServiceNamePostOnTwitter];
    service.delegate = self;
    
    NSMutableString *urlString = [NSMutableString stringWithFormat:@"http://www.leaderg.com/mysng/live?s=%@&p=%@",
                                  [[NSUserDefaults standardUserDefaults] objectForKey:@"robotSn"],
                                  [[NSUserDefaults standardUserDefaults] objectForKey:@"share"]];
    
    [service performWithItems:[NSArray arrayWithObject:urlString]];
}

之後按下button的結果如下:

上面的code非常簡單,主要為四個步驟:

  1. 先create一個NSSharingService的物件
  2. 將NSSharingService的delegate設為self
  3. 將PO文的內容存到NSString中
  4. 把內容用一個NSArray給NSSharingService物件去perform

Reference:

PS. 上面的教學和筆記不太一樣但想法相同

沒有留言:

張貼留言