社交网络编程API之iOS系统自带分享

时间:2015-07-26 08:34:52   收藏:0   阅读:2024

社交网络编程API

社交网络编程主要使用iOS提供的Social框架,目前Social框架主要包含两个类:

iOS6分享列表------UIActivityViewController

在iOS6之后提供了一个分享列表视图,它通过UIActivityViewController管理。苹果设计它的主要目的是替换分享动作选单(ActionSheet),分享动作选单是出于分享目的的动作选单。

内置活动列表项

内置了9个活动列表项目,他们是下面的9个常量定义的:

自定义活动列表项

有时候根据共享内容不同,需要自定义活动列表项。例如一个视频,需要共享到优酷。下面介绍自定义活动列表项。

凡是继承UIActivity抽象类的子类对象都可以放到列表中呈现出来。这包括了系统内置的9个活动列表,也可是是我们自定义的列表项。UIActivity抽象类中需要子类实现的方法如下:

自定义视图的用到的图片的大小

代码展示:

//自定义活动列表

 - (IBAction)shareAction:(UIBarButtonItem *)sender {

    NSURL *urlTbShare = [NSURL URLWithString:@"http://www.notepadapi.sinaapp.com"];

    NSArray *activityItems = @[urlTbShare];   

    BookActivity *bookActivity = [BookActivity new];

 

    NSArray *applicationActivities = @[bookActivity];

 

 UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];

 

    [self presentViewController:activityVC animated:YES completion:nil];

}   

BookActivity.h

 #import <UIKit/UIKit.h>

@interface BookActivity : UIActivity
@property(nonatomic,strong)NSURL *url;
@end

  

BookActivity.m

#import "BookActivity.h"

 

@implementation BookActivity

/*为自定义活动列表项指定一个服务类型标识 */

-(NSString *)activityType {

    return NSStringFromClass([self class]);

}

 

-(NSString *)activityTitle {

    return @"ActivityTitle";

}

/**/

-(UIImage *)activityImage {

    return [UIImage imageNamed:@"image"];

}

-(BOOL)canPerformWithActivityItems:(NSArray *)activityItems {

    for(id activityItem in activityItems) {

        if ([activityItem isKindOfClass:[NSURL class]]) {

            if ([[UIApplication sharedApplication] canOpenURL:activityItem]) {

                return YES;

            }

        }

    }

     return NO;

}

-(void)prepareWithActivityItems:(NSArray *)activityItems {

    for(id activityItem in activityItems) {

        if ([activityItem isKindOfClass:[NSURL class]]) {

            _url = activityItem;

        }

    }

}

-(void)performActivity {

    BOOL completed = [[UIApplication sharedApplication] openURL:_url];

    [self activityDidFinish:completed];

}

@end

  

撰写视图控制器---SLComposeViewController

它的呈现在iPhone采用模态视图,iPad则需要Popover视图呈现

如果发送微博信息并不像弹出分享列表,再去选择,而是在应用中直接进入写评论的地方(iOS系统提供的UI画面)。SLComposeViewController类可以帮助我们实现这个目的,SLComposeViewControlelr不仅可以撰写weibo,还可以撰写Tweet和Facebook.

发送这样的社交网络信息一般会包含3中信息---初始文本、图片和超链接,因此SLComposeViewController类设计3个相对方法:

代码展示

- (IBAction)zhuanxieAction:(UIBarButtonItem *)sender {

    SLComposeViewController *composeViewControlelr = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

        SLComposeViewControllerCompletionHandler __block completionHandler = ^(SLComposeViewControllerResult result) {

        [composeViewControlelr dismissViewControllerAnimated:YES completion:nil];

            switch (result) {

                case SLComposeViewControllerResultCancelled:

                    NSLog(@"Canceled....");

                   break;

                case SLComposeViewControllerResultDone:

                    NSLog(@"Posted......");

                    break;

                default:

                    break;

            }

        };

        [composeViewControlelr addImage:[UIImage imageNamed:@"image"]];

        [composeViewControlelr setInitialText:@"分享文本"];

        [composeViewControlelr addURL:[NSURL URLWithString:@"http://www.baidu.com"]];

        [composeViewControlelr setCompletionHandler:completionHandler];

        [self presentViewController:composeViewControlelr animated:YES completion:nil];

    }

}

  

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!