使用
初始化
注册分享应用
注册组件支持的分享应用。
接口定义
- (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调用
确认管理端信息正确。
确认授权应用的包名、签名正确。
是否跨企业调用,也是会提示无权限。