微信分享,分享与收藏功能 /iOS开发手册

开发者在 App 中在集成微信 SDK 后,可调用接口实现,以下依次是文字、图片、视频、网页、小程序、音乐视频类型分享的示例。

微信分享,分享与收藏功能 /iOS开发手册

开发者在 App 中在集成微信 SDK 后,可调用接口实现,以下依次是文字、图片、视频、网页、小程序、音乐视频类型分享的示例。

WXMediaMessage (微信媒体消息内容)说明

字段类型含义备注
titleNSString消息标题限制长度不超过512Bytes
descriptionNSString描述内容限制长度不超过1KB
thumbDataNSData缩略图的二进制数据限制内容大小不超过32KB
mediaObjectNSObject多媒体数据对象可以为WXImageObject、WXMusicVideoObject、WXVideoObject、WXWebpageObject等
messageExtNSString额外信息mediaObject为 WXMusicVideoObject 时,从微信音乐播放器内跳回,会携带该参数,长度不能超过2k。(iOS、Android双平台要一致)

SendMessageToWXReq(SendMessageToWX请求类)

分享或收藏的目标场景,通过修改 SendMessageToWXReq 的 scene 字段实现。

字段类型含义备注
textNSString发送消息的文本内容
bTextBOOL是否文本消息发送消息的类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息
messageWXMediaMessage发送消息的多媒体内容|
sceneint发送的目标场景分享到对话:
WXSceneSession
分享到朋友圈:
WXSceneTimeline
分享到收藏:
WXSceneFavorite

示例

一、文字类型分享示例

SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = YES;
req.text = @"分享的内容";
req.scene = WXSceneSession;
[WXApi sendReq:req];

二、图片类型分享示例

WXImageObject 多媒体消息中包含的图片数据对象

字段类型含义备注
imageDataNSData图片的二进制数据内容大小不超过10MB
UIImage *image = [UIImage imageNamed:@"res2.png"];
imageData = UIImageJPEGRepresentation(image, 0.7);
   
WXImageObject *imageObject = [WXImageObject object];
imageObject.imageData = imageData;

WXMediaMessage *message = [WXMediaMessage message];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"res5"
                                                     ofType:@"jpg"];
message.thumbData = [NSData dataWithContentsOfFile:filePath];
message.mediaObject = imageObject;

SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
req.scene = WXSceneTimeline;
[WXApi sendReq:req];

三、视频类型分享示例

WXVideoObject 多媒体消息中包含的视频数据对象

字段类型含义备注
videoUrlNSString视频链接限制长度不超过10KB
videoLowBandUrlNSString供低带宽的环境下使用的视频链接限制长度不超过10KB

注意:videoUrl和 videoLowBandUrl 不能同时为空

WXVideoObject *videoObject = [WXVideoObject object];
videoObject.videoUrl = @"视频url";
videoObject.videoLowBandUrl = @"低分辨率视频url";
WXMediaMessage *message = [WXMediaMessage message];
message.title = @"标题";
message.description = @"描述";
[message setThumbImage:[UIImage imageNamed:@"缩略图.jpg"]];
message.mediaObject = videoObject;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
req.scene = WXSceneSession;
[WXApi sendReq:req];

四、网页类型分享示例

WXWebpageObject 多媒体消息中包含的网页数据对象

字段类型含义备注
webpageUrlNSStringhtml链接限制长度不超过10KB
WXWebpageObject *webpageObject = [WXWebpageObject object];
webpageObject.webpageUrl = @"https://open.weixin.qq.com";
WXMediaMessage *message = [WXMediaMessage message];
message.title = @"标题";
message.description = @"描述";
[message setThumbImage:[UIImage imageNamed:@"缩略图.jpg"]];
message.mediaObject = webpageObject;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
req.scene = WXSceneSession;
[WXApi sendReq:req];

五、小程序类型分享示例

WXMiniProgramObject 多媒体消息中包含的小程序数据对象

字段类型含义备注
webpageUrlNSString兼容低版本的网页链接限制长度不超过10KB
userNameNSString小程序的userName小程序原始 ID 获取方法:登录小程序管理后台 – 设置 – 基本设置 – 帐号信息
pathNSString小程序的页面路径小程序页面路径;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 “?foo=bar”
hdImageDataNSData小程序新版本的预览图二进制数据,6.5.9及以上版本微信客户端支持限制大小不超过128KB,自定义图片建议长宽比是 5:4。
withShareTicketBOOL是否使用带 shareTicket 的分享通常开发者希望分享出去的小程序被二次打开时可以获取到更多信息,例如群的标识。可以设置 withShareTicket 为true,当分享卡片在群聊中被其他用户打开时,可以获取到shareTicket,用于获取更多分享信息。详见小程序获取更多分享信息 ,最低客户端版本要求:6.5.13
miniprogramTypeWXMiniProgramType小程序的类型,默认正式版,1.8.1及以上版本开发者工具包支持分享开发版和体验版小程序正式版: WXMiniProgramTypeRelease;
测试版: WXMiniProgramTypeTest;
体验版: WXMiniProgramTypePreview;
WXMiniProgramObject *object = [WXMiniProgramObject object];
object.webpageUrl = webpageUrl;
object.userName = userName;
object.path = path;
object.hdImageData = hdImageData;
object.withShareTicket = withShareTicket;
object.miniProgramType = programType;
WXMediaMessage *message = [WXMediaMessage message];
message.title = @"小程序标题";
message.description = @"小程序描述";
message.thumbData = nil;  //兼容旧版本节点的图片,小于32KB,新版本优先
                          //使用 WXMiniProgramObject 的hdImageData属性
message.mediaObject = object;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
req.scene = WXSceneSession;  //目前只支持会话
[WXApi sendReq:req];

六、音乐视频类型分享示例

该类型需要OpenSDK 1.8.9以及以上版本

WXMusicVideoObject 多媒体消息中包含的音乐视频数据对象

字段类型含义备注
musicUrlNSString音频网页的 URL 地址必填,限制长度不超过10KB
musicDataUrlNSString音频数据的 URL 地址必填,限制长度不超过10KB
singerNameNSString歌手名必填,限制长度不超过1KB
durationUInt32音乐时长,歌曲时间必填,不能为0,单位:毫秒,
hdAlbumThumbDataNSData高清专辑封面图选填,大小不超过1MB
albumNameNSString音乐专辑名称选填
songLyricNSString歌词信息 LRC格式选填,长度不能超过32K
musicGenreNSString音乐流派选填
issueDateUInt64发行时间 Unix 时间戳选填,单位:秒
identificationNSString音乐标识符选填,建议填写,用户在微信音乐播放器内跳回应用时会携带该参数,可用于唯一标识一首歌,微信侧不理解(iOS、Android双平台要一致)

发送 MV 到微信:

WXMusicVideoObject *mvObject = [WXMusicVideoObject object];
mvObject.musicUrl = @"音乐url";
mvObject.musicDataUrl = @"音乐数据url";
mvObject.singerName = @"歌手名";
mvObject.duration = 60 * 1000; //音乐时长,毫秒
mvObject.hdAlbumThumbData = hdAlbumThumbData; //高清专辑封面图
mvObject.albumName = @"专辑名";
mvObject.musicGenre = @"音乐流派";
mvObject.issueDate = 1611116532; //发行时间 Unix 时间戳
mvObject.identification = @"test-identification"; //音乐标识符 

WXMediaMessage *message = [WXMediaMessage message];
message.title = @"歌曲名称";//必填,不能为空
message.messageExt = @"额外信息"; //微信跳回时会带上

[message setThumbImage:[UIImage imageNamed:@"缩略图.jpg"]];
message.mediaObject = mvObject;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
req.scene = WXSceneSession;
[WXApi sendReq:req];

处理从微信音乐播放器内跳回:

#pragma mark - WXApiDelegate

- (void)onReq:(BaseReq *)req {
    if ([req isKindOfClass:[LaunchFromWXReq class]]) {
        LaunchFromWXReq *launchReq = (LaunchFromWXReq *)req;
        NSString* messageExt = launchReq.message.messageExt;  //分享到微信时的透传额外信息字字段
        if ([launchReq.message.mediaObject isKindOfClass:WXMusicVideoObject.class]) {
            WXMusicVideoObject *musicVideoObject = (WXMusicVideoObject *)launchReq.message.mediaObject;
            NSString *identification = musicVideoObject.identification; //分享到微信时的音乐标识符字段
            //应用可以根据 messageExt 和identification处理逻辑
        }
    }
}

音乐视频类型使用说明:

  1. 注意事项:
    • 音乐视频类型与音乐类型不同,分享至微信的音乐视频消息,直接点击好友会话或朋友圈下的分享内容会跳转到微信原生播放器,可以对音乐作品辅以视频制作成音乐视频,进行点赞、评论、发送给朋友、分享到朋友圈、发布至视频号等。
    • 在播放器里点击跳转入口会跳转回App,没有安装 App 时会打开 musicUrl 链接。
  2. 音乐视频类型分享,请开发者特别注意必填的字段有:
    • WXMediaMessage.title:歌曲名称
    • WXMusicVideoObject.musicUrl:音频网页的 URL 地址
    • WXMusicVideoObject.musicDataUrl:音频数据的 URL 地址
    • WXMusicVideoObject.singerName:歌手名
    • WXMusicVideoObject.duration:歌曲时长,单位为毫秒
  3. 第三方应用在分享时设置的字段 WXMediaMessage.messageExt 字段与WXMusicVideoObject.identification 需要保证 Android 与iOS平台是一致的,否则跨平台分享的消息跳转回应用无法保证能够跳转到对应歌曲。
  4. 无论 WXMediaMessage.mediaObject 类型是什么,WXMediaMessage.messgeExt 字段均会透传是应用在分享时写入的数据,应用可使用该字段进行应用低版本的兼容处理。

注意事项

  1. 发起分享的 App 与小程序属于同一微信开放平台帐号。
  2. 支持分享小程序类型消息至会话,暂不支持分享至朋友圈。
  3. 若客户端版本低于6.5.6或在 iPad 客户端接收,小程序类型分享将自动转成网页类型分享。开发者必须填写网页链接字段,确保低版本客户端能正常打开网页链接。
  4. 对于音乐视频类型的分享,需按照如下格式发送邮件至 hansenxu@tencent.com
    • 邮件主题:帐号 XXX 关于音乐视频类 appmsg 的分享功能申请;
    • 邮件内容:需提供移动应用 appid 和需分享的音频网页的域名信息;
    • 要求:
      • 申请帐号需为已完成主体认证的帐号;
      • 申请“音乐视频类型的分享权限”需先完成“音乐类型的分享权限”,且申请的移动应用的 appid 和域名需一致;
      • 音乐视频类型的分享权限会涉及到相关法务协议的签署,具体签订流程和开通结果请参考邮件回复结果。

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/13391/

部分内容来自网络投稿,如有侵权联系立删

(0)
上一篇 2022年11月29日 下午3:15
下一篇 2022年11月29日 下午3:18

相关推荐