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

简介:

社交网络编程API

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

  • SLComposeViewController
  • 提供撰写社交信息(如微博信息)的视图控制器,有iOS系统提供UI,就是写入要分享内容的小弹出框。
  • SLRequest封装了HTTP请求,提供了同一的请求社交网络服务的接口,能够直接与社交网路服务通信的能力,没有UI需要自己编写设计.
  • 除了Social框架外,还有可能用到UIActivityViewControlelr和ACAccount.UIActivityViewController也是iOS6的新的内容,它提供了一个分享列表视图控制器。而ACAccount是Accounts框架中的一个类,ACAccount对象封装了存储在账户数据库中用户账户信息,使用SLRequest访问社交网络服务时,需要使用ACAccount对象提供 用户账户信息。

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

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

内置活动列表项

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

  • UIActivityTypePostToFacebook,Facebook活动列表项;
  • UIActivityTypePostToTwitter,Twitter活动列表项;
  • UIActivityTypePostToWeibo,新浪微博活动列表项;
  • UIActivityTypeMessage,iOS中的iMessage应用活动那个列表项;
  • UIActivityTypeMail,发送Mail活动列表项;
  • UIActivityTypePrint,共享打印活动列表项;
  • UIActivityTypeCopyToPasteboard,复制到剪切板活动列表项;
  • UIActivityTypeAssignToContact,访问联系人活动列表项;
  • UIActivityTypeSaveToCameraRoll,访问设备上的相册活动列表项;

自定义活动列表项

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

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

  • -(NSString *)activityType,为自定义活动列表项指定一个服务类型标识 
  • -(NSString *)activityTitle,指定在列表中出现的名称
  • -(UIImage *)activityImage,指定在列表中显示的图标
  • -(BOOL)canPerformWithActivityItems:(NSArray *)activityItems,指定活动列表中的某些数据项目,是否可以执行,返回YES可以执行,返回NO,不可以执行。
  • -(void)prepareWithActivityItems:(NSArray *)activityItems,预处理要执行的活动列表中的数据项目;
  • -(UIViewController *)activityViewController,执行活动列表,如果返回非nil,会弹出模态视图,在结束时调用activityDidFinish;
  • -(void)performActivity,执行活动列表,如果activityViewController方法没有提供视图,就会调用这个方法,在结束时调用activityDidFinish;
  • -(void)activityDidFinish:(BOOL)completed,当执行完成的时候必须调用哪个这个方法;

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

  • Book.png 普通iPhone设备,分辨率不小于43*43
  • Book@2x.png,视网膜显示iPhone设备,分辨率不小于86*86
  • Book~ipad.png,普通iPad设备,分辨率不小于55*55
  • Book@2x~ipad.png,视网膜显示屏iPad设备,分辨率不小于110*110

代码展示:

//自定义活动列表


- (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个相对方法:

  • -(BOOL)setInitialText:(NSString *)text,设置初始文本内容
  • -(BOOL)addImage:(UIImage *)iamge,添加图片
  • -(BOOL)addURL:(NSURL *)url,添加超链接信息

代码展示


- (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];
 
    }
 
}

相关文章
|
9月前
|
数据采集 机器学习/深度学习 搜索推荐
利用通义大模型构建个性化推荐系统——从数据预处理到实时API部署
本文详细介绍了基于通义大模型构建个性化推荐系统的全流程,涵盖数据预处理、模型微调、实时部署及效果优化。通过采用Qwen-72B结合LoRA技术,实现电商场景下CTR提升58%,GMV增长12.7%。文章分析了特征工程、多任务学习和性能调优的关键步骤,并探讨内存优化与蒸馏实践。最后总结了大模型在推荐系统中的适用场景与局限性,提出未来向MoE架构和因果推断方向演进的建议。
1437 11
|
8月前
|
JSON 搜索推荐 算法
利用API提升电商用户体验:个性化推荐系统
在电商竞争激烈的当下,个性化推荐系统成为提升用户粘性与转化率的关键。本文详解如何通过API集成高效接入先进推荐算法,实现实时精准推荐,优化用户体验,提升业务增长。
352 0
|
6月前
|
算法 API 数据库
生鲜电商技术实践:基于保质期API的自动下架系统保障食品安全
基于保质期提醒API与自动化工作流,实现生鲜商品临期智能预警与自动下架。通过设定差异化预警阈值(如蔬菜2天、冷冻品7天),每日扫描数据库并触发下架指令,确保食品安全合规,降低损耗与客诉,提升运营效率。
407 0
|
7月前
|
机器学习/深度学习 人工智能 供应链
淘宝API智能补货系统:库存周转率提升50%的奥秘
在电商竞争激烈的当下,库存管理效率决定企业成败。淘宝API智能补货系统融合人工智能与淘宝开放接口,实现库存自动化管理,大幅提升库存周转率,降低运营成本,助力企业实现高效、智能、精益的供应链管理。
445 0
|
7月前
|
监控 安全 API
京东 API 接口:打造高效京东店铺订单处理系统
在电商竞争激烈的环境下,京东店铺需提升订单处理效率以优化用户体验与收益。本文介绍如何利用京东开放平台的API接口,构建高效订单处理系统,涵盖订单查询、库存同步、物流跟踪等功能,助力商家实现自动化管理,显著提升运营效率与客户满意度。
397 0
|
11月前
|
存储 人工智能 Java
Spring AI与DeepSeek实战四:系统API调用
在AI应用开发中,工具调用是增强大模型能力的核心技术,通过让模型与外部API或工具交互,可实现实时信息检索(如天气查询、新闻获取)、系统操作(如创建任务、发送邮件)等功能;本文结合Spring AI与大模型,演示如何通过Tool Calling实现系统API调用,同时处理多轮对话中的会话记忆。
2331 57
|
8月前
|
机器学习/深度学习 JSON 监控
拼多多API库存预警系统:避免缺货损失千万!
在电商运营中,缺货可能导致订单流失与经济损失,拼多多推出的API库存预警系统可实时监控库存,及时预警,降低缺货风险。系统支持多语言集成,商家可快速构建自动化监控与补货流程,提升供应链效率,保障销售连续性。
608 0
|
8月前
|
缓存 算法 API
从 0 实现 API 接口签名验证系统:基于 HMAC-SHA256 的防篡改方案(附 Python 全代码)
本文介绍基于 的 API 接口签名验证系统,实现防篡改与防重放攻击,包含完整设计原理、签名生成规则及可运行的 Python 客户端与服务端代码,并提供安全性优化与部署建议。
|
8月前
|
人工智能 供应链 物联网
效率提升300%:开放银行API驱动电商分账系统的“零代码”革命
在数字经济背景下,开放银行API与电商生态深度融合,推动支付清算与分账系统从封闭走向开放。通过技术解耦与系统重构,实现资金流、信息流与业务流的高效协同,提升支付效率与分账灵活性,助力电商场景创新。本文从技术驱动力、重构路径、实践案例与未来趋势四方面,解析这一变革的核心逻辑与落地价值。