友盟集成(二) —— UShare模块之快速集成(二)

版本记录

版本号 时间
V1.0 2018.04.04

前言

相信很多人用过友盟,包括友盟的第三方登录、分享以及统计。这里我们就分几个模块进行详细的说明 —— 移动统计(U - App)、网站统计(U - Web)、消息推送(U - Push)、社会化分享(U - Share)、游戏统计(U - Game)、互联网运营数据服务(Dplus) - 多维度、一站式、精细化数据管理服务。感兴趣的可以看上面几篇。
1. 友盟集成(一) —— UShare模块之快速集成(一)

分享到第三方平台

分享目前支持的类型有:

  • 网页类型(网页链接)
  • 图片
  • 文本
  • 表情(GIF图片,即Emotion类型,只有微信支持)
  • 图文(包含一张图片和一段文本)
  • 视频(只支持视频URL、缩略图及描述)
  • 音乐(只支持音乐URL、缩略图及描述)

1. 分享LinkCard(网页链接)

- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
{
    //创建分享消息对象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];

    //创建网页内容对象
    NSString* thumbURL =  @"https://mobile.umeng.com/images/pic/home/social/img-1.png";
    UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"欢迎使用【友盟+】社会化组件U-Share" descr:@"欢迎使用【友盟+】社会化组件U-Share,SDK包最小,集成成本最低,助力您的产品开发、运营与推广!" thumImage:thumbURL];
    //设置网页地址
    shareObject.webpageUrl = @"http://mobile.umeng.com/social";

    //分享消息对象设置分享内容对象
    messageObject.shareObject = shareObject;

    //调用分享接口
    [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
        if (error) {
            UMSocialLogInfo(@"************Share fail with error %@*********",error);
        }else{
            if ([data isKindOfClass:[UMSocialShareResponse class]]) {
                UMSocialShareResponse *resp = data;
                //分享结果消息
                UMSocialLogInfo(@"response message is %@",resp.message);
                //第三方原始返回的数据
                UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);

            }else{
                UMSocialLogInfo(@"response data is %@",data);
            }
        }
    }];
}

更多分享类型详见进阶文档-分享到第三方平台。

2. 调用分享面板

在分享按钮绑定如下触发代码

#import 
//显示分享面板
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
    // 根据获取的platformType确定所选平台进行下一步操作
}];

更多分享面板说明请参考进阶文档-分享面板UI。

3. 定制自己的分享面板预定义平台

以下方法可设置平台顺序

#import 
 [UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_Sina),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_WechatSession)]];
 [UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
    // 根据获取的platformType确定所选平台进行下一步操作
}];

为避免应用审核被拒,仅会对有效的平台进行显示,如平台应用未安装,或平台应用不支持等会进行隐藏。 由于以上原因,在模拟器上部分平台会隐藏。

如果遇到分享面板未显示,请参考分享面板无法弹出


Swift接入U-Share SDK

Swift调用Objective-C需要建立一个桥接头文件进行交互。

1. 新建桥接头文件

友盟集成(二) —— UShare模块之快速集成(二)_第1张图片

2. 设置Objective-C桥接文件

友盟集成(二) —— UShare模块之快速集成(二)_第2张图片

3. 导入SDK头文件

在新建的桥接文件header.h中加入U-Share SDK头文件:

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

// U-Share核心SDK
#import 

// U-Share分享面板SDK,未添加分享面板SDK可将此行去掉
#import 

4. UMSocialDemo的OC和Swift的切换

UMSocialDemo是用OC的代码编写的,同时也兼容了swift3.0的调用示例(UMSocialDemo不再对swift2.0做示例兼容).

swift文件夹的结构

UMSocialSDK-Bridging-Header.h为swift3.0的桥接文件,主要是在swift3.0中,调用oc的代码。

UMSocialSwiftInterface.swift 为Swift3.0的接口文件,主要是为了展示用户让oc调用swift3.0的代码的示例(用户可以在swift3.0的工程中直接调用对应的swift接口)。

设置切换swift的宏

友盟集成(二) —— UShare模块之快速集成(二)_第3张图片

引入对应的swift的头文件,并在OC中调用swift3.0的代码如下

#ifdef UM_Swift
#import "UMSocialDemo-Swift.h"
#endif

//分享文本
- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{
    //创建分享消息对象
    UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    //设置文本
    messageObject.text = UMS_Text;

#ifdef UM_Swift
    [UMSocialSwiftInterface shareWithPlattype:platformType messageObject:messageObject viewController:self completion:^(UMSocialShareResponse * data, NSError * error) {
#else
        //调用分享接口
        [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
#endif
            if (error) {
                UMSocialLogInfo(@"************Share fail with error %@*********",error);
            }else{
                if ([data isKindOfClass:[UMSocialShareResponse class]]) {
                    UMSocialShareResponse *resp = data;
                    //分享结果消息
                    UMSocialLogInfo(@"response message is %@",resp.message);
                    //第三方原始返回的数据
                    UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);

                }else{
                    UMSocialLogInfo(@"response data is %@",data);
                }
            }
            [self alertWithError:error];
        }];
}

注意事项如下:

  • UMSocialDemo-Swift.h 是工程自动为OC调用swift生成的,如果在新建的工程中应该是 $(TARGET_NAME)-Swift.h$(TARGET_NAME)为你的工程默认配置的名字

  • UMSocialDemo需要xcode8下打开,因为里面引入了swift3.0的文件,不然会编译出错(如果不需要swift3.0,直接运行OC的代码,可以去掉对应宏 UM_Swift 和工程里面对应的 文件夹Swift 即可编译通过)。

后记

本篇主要介绍了分享到第三方平台和swift接入U-Share SDK,感兴趣的给个赞或者关注~~~

友盟集成(二) —— UShare模块之快速集成(二)_第4张图片

你可能感兴趣的:(友盟集成(二) —— UShare模块之快速集成(二))