使用

初始化

注册分享应用

注册组件支持的分享应用。

接口定义

- (BOOL)registerWeChatApp:(TMFShareApp)app withAppId:(NSString *)appId universalLink:(NSString *)universalLink;

参数说明

参数 类型 描述 必选
app TMFShareApp 待注册的分享应用 Y
appId NSString 待注册的分享应用从配置平台申请的应用 ID Y
universalLink NSString 配置的用于在微信开放平台上配置的 universalLink Y

其中,TMFShareApp 的定义,请参见 分享应用类型定义

调用示例

[[TMFShareManager shareManager] registerApp:TMFShareAppWeChat withAppId:@"wx8071141a542f9dad" universalLink:@"https://xxx/"];

注册组件支持的分享应用。

接口定义

- (BOOL)registerApp:(TMFShareApp)app withAppId:(NSString *)appId;    //不推荐

参数说明

参数 类型 描述 必选
app TMFShareApp 待注册的分享应用 Y
appId NSString 待注册的分享应用从配置平台申请的应用 ID Y

其中,TMFShareApp 的定义,请参见 分享应用类型定义

企业微信接口定义

- (BOOL)registerAppWithAppId:(NSString *)appId
                      corpId:(NSString *)corpId
                     agentId:(NSString *)agentId;

参数说明

参数 类型 描述 必选
appId NSString 待注册的分享应用从配置平台申请的应用 appId Y
corpId NSString 待注册的分享应用从配置平台申请的应用 corpId Y
agentId NSString 待注册的分享应用从配置平台申请的应用 agentId Y

调用示例

[[TMFShareManager shareManager] registerAppWithAppId:SHARE_WXWORK_APP_ID corpId:SHARE_WXWORK_APP_ID agentId:SHARE_WXWORK_AGENT_ID]

分享应用类型定义

组件支持的分享应用类型定义。

接口定义

typedef NS_ENUM(NSInteger, TMFShareApp) {
    TMFShareAppNone     = 0,
    TMFShareAppWeChat   = 1,    // 微信
    TMFShareAppQQ       = 2,    // QQ
    TMFShareAppAlipay   = 3,    // 支付宝
    TMFShareAppWeibo    = 4,    // 微博
    TMFShareAppSMS      = 5,    // 短信
      TMFShareAppDDing    = 6,    // 钉钉
      TMFShareAppWXWork   = 7     // 企业微信
};

分享应用信息获取

分享应用是否安装

判断分享应用是否安装。

接口定义

- (BOOL)isAppInstalled:(TMFShareApp)app;

参数说明

参数 类型 描述 必选
app TMFShareApp 待分享的目标应用 Y

其中,TMFShareApp 的定义,请参见 分享应用类型定义

调用示例

[[TMFShareManager shareManager] isAppInstalled:TMFShareAppWeChat];

分享应用的安装地址

获取分享应用的安装地址。

接口定义

- (nullable NSURL *)getAppInstallURL:(TMFShareApp)app;

参数说明

参数 类型 描述 必选
app TMFShareApp 待分享的目标应用 Y

其中,TMFShareApp 的定义,请参见 分享应用类型定义

返回值

类型 描述
NSURL 本地离线包的版本号

调用示例

NSURL *URL = [[TMFShareManager shareManager] getAppInstallURL:TMFShareAppWeChat];

内容分享

分享操作

创建分享对象,并分享到目标应用。

接口定义

- (void)shareToApp:(TMFShareApp)app withObject:(TMFShareObject *)object completionHandler:(nullable void (^)(TMFShareResponse *response))completionHandler;

参数说明

参数 类型 描述 必选
app TMFShareApp 待分享的目标应用 Y
object TMFShareObject 分享对象,包括定义分享场景,分享类型以及多媒体内容 Y

其中,TMFShareObject 的定义,请参见 创建分享对象

completionHandler 回调

参数 类型 描述 必选
response TMFShareResponse 可更新的离线包业务 ID 列表 Y

其中,TMFShareResponse 的定义,请参见 分享回调对象

调用示例

// 分享图片到微信朋友圈
TMFShareObject *shareObject = [[TMFShareObject alloc] init]; // Share object
shareObject.shareType = TMFShareTypeImage;    // 分享对象类型,根据实际需要填写
shareObject.scene = TMFShareSceneTimeline;    // 分享对象场景,根据实际需要填写
shareObject.title = @"TMF分享测试标题";
shareObject.text = @"TMF分享测试描述";

UIImage *thumbnail = [UIImage imageNamed:@"TMFShareTest"];
shareObject.image = thumbnail;

TMFShareApp app = TMFShareAppWeChat; // 分享目标应用,根据实际需要填写
if ([[TMFShareManager shareManager] isAppInstalled:app]) {
  [[TMFShareManager shareManager] shareToApp:app withObject:shareObject completionHandler:^(TMFShareResponse * _Nonnull response) {
        [self didShareToApp:app respCode:response.retCode];
    }];
}

// 分享处理结果
- (void)didShareToApp:(TMFShareApp)app respCode:(NSInteger)resp {
    NSString *message = nil;
    // -4是QQ取消
    // -2是AliPay/短信取消
    // -1是Weibo取消
    if ((TMFShareAppQQ == app && -4 == resp)
        || ((TMFShareAppAlipay == app | TMFShareAppSMS == app) && -2 == resp)
        || (TMFShareAppWeibo == app && -1 == resp)) {
        message = @"分享取消了";
    }

    // 0是成功
    else if (0 == resp) {
        message = @"分享成功了";
    }

    // 其他原因
    else {
        /* 微博Weibo 回调时候 响应代码 说明
         Code Success               = 0,    //成功
         Code UserCancel            = -1,   //用户取消发送
         Code SentFail              = -2,   //发送失败
         Code AuthDeny              = -3,   //授权失败
         Code UserCancelInstall     = -4,   //用户取消安装微博客户端
         Code PayFail               = -5,   //支付失败
         Code ShareInSDKFailed      = -8,   //分享失败 详情见TMFShareResponse errorMessage
         Code Unsupport             = -99,  //不支持的请求
         Code Unknown               = -100,
         */
        message = [NSString stringWithFormat:@"分享失败了,code=%ld", (long)resp];
    }
}

创建分享对象

创建分享对象,包括定义分享场景,分享类型以及多媒体内容。

TMFShareObject

接口定义

参数 类型 描述 必选
shareType TMFShareType 分享类型
'TMFShareTypeText':文本信息
'TMFShareTypeImage':图片信息
'TMFShareTypeWebPage':网页类型
Y
scene TMFShareScene 分享场景
'TMFShareSceneNone':除了分享到微信,其他应用均采用默认值
'TMFShareSceneMessage':分享给联系人
'TMFShareSceneTimeline':分享到朋友圈
Y
text NSString 文本信息
分享文本信息时,指定分享的文本信息
分享web信息时,对web信息进行描述
shareType == TMFShareTypeText时必填
title NSString 文本信息
分享web信息时,对web信息标题
N
image UIImage 分享图片信息时的内容 shareType == TMFShareTypeImage时必填
imageData NSData 分享图片信息时的图片二进制信息 N
imageQuality CGFloat 图片质量,0.0f-1.0f,默认为0.3f (选填,默认是0.3) N
thumbnail UIImage 用于分享 Web 信息时,作为 Web 的缩略图片 N
previewImageURL NSURL 用于分享 Web 信息时,作为 Web 的缩略图片的 URL,在支持图片 URL 的 App 有效,优先使用 N
webPageURL NSURL 分享的链接 shareType == TMFShareTypeWebPage时必填
fileName NSString 分享的文件名 分享到企微的文件、视频、图片时必填
filePath NSString 分享的文件地址 分享到企微的文件、视频、图片时必填

调用示例

// 分享对象的参数请根据实际填写
TMFShareObject *shareObject = [[TMFShareObject alloc] init]; // Share object

分享回调对象

分享回调对象,包括分享结果返回码,错误消息。

TMFShareResponse

接口定义

参数 类型 描述
retCode NSInteger TMFShareRetCode
'TMFShareRetCodeSuccess = 0':成功
'TMFShareRetCodeUnknown = -999':未知结果,当分享组件跳转到目标 App 后,而用户未在目标 App 上进行操作,手动返回当前 App 后,则会返回 Unknown
'TMFShareRetCodeFailedDirectly = -1000' :分享组件未跳转到目标 App 而直接返回失败,如目标 App 未安装等情况
errorMessage NSString /

调用示例

[[TMFShareManager shareManager] shareToApp:app withObject:shareObject completionHandler:^(TMFShareResponse * _Nonnull response) {
      NSInteger code = response.retCode;
      // 其中,code的取值如下:

    // -4是QQ取消
    // -2是AliPay/短信取消
    // -1是Weibo取消
    // 0是成功

      // 微信WeChat 回调0,不管成功或者失败
    /* 微博Weibo 回调时候 响应代码 说明
           Code Success               = 0,    //成功
           Code UserCancel            = -1,   //用户取消发送
           Code SentFail              = -2,   //发送失败
           Code AuthDeny              = -3,   //授权失败
           Code UserCancelInstall     = -4,   //用户取消安装微博客户端
           Code PayFail               = -5,   //支付失败
           Code ShareInSDKFailed      = -8,   //分享失败 详情见TMFShareResponse errorMessage
           Code Unsupport             = -99,  //不支持的请求
           Code Unknown               = -100,
           */
}];

分享跳回处理

分享到目标应用后,被目标应该拉起时的处理。

接口定义

- (BOOL)handleOpenURL:(NSURL *)URL;

参数说明

参数 类型 描述 必选
URL NSURL 拉起 URL Y

调用示例

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation {

    // iOS9.0- 监听分享App的拉起处理
    BOOL ret = [[TMFShareManager shareManager] handleOpenURL:url];
      return ret;
}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {

    // iOS9.0+ 监听分享App的拉起处理
    BOOL ret = [[TMFShareManager shareManager] handleOpenURL:url];
      return = ret;
}

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts{

    // iOS 13+ 走SceneDelegate时监听分享App的拉起处理
    [[TMFShareManager shareManager] handleOpenURL:[URLContexts anyObject].URL]
}

Universal Link使用进入应用时处理

集成微信分享使用 Universal Link 应用被起时处理,在 AppDelegate的continueUserActivity 方法中调用。

接口定义

- (BOOL)handleOpenUniversalLink:(NSUserActivity *)userActivity;

参数说明

参数 类型 描述 必选
userActivity NSUserActivity - Y

调用示例

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
{
    return [[TMFShareManager shareManager] handleOpenUniversalLink:userActivity];
}

注意事项

微信分享组件

  • 微信对 Universal Links 配置要求

    • Universal Links 必须支持 HTTPS。

    • Universal Links 配置的 paths 不能带 query 参数。

    • 微信使用 Universal Links 拉起第三方 App 时,会在 Universal Links 末尾拼接路径和参数,因此 App 配置的 paths 必须加上通配符/*

      示例:

      { 
      "appID": "8P7343TG54.com.tencent.xin.SDKSample",    
      "paths": ["/sdksample/*"]
      }
      
  • 向微信注册你的应用程序 ID 和 Universal Links

    请到 微信开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得 AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用,请根据需要进行 SDK 下载

    企业微信分享组件

  • 企业微信分享报不支持的SDK调用

    • 确认管理端信息正确。

    • 确认授权应用的包名、签名正确。

    • 是否跨企业调用,也是会提示无权限。

Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""