集成分享是一件不难的事,可以说直接按照开发文档流程就可以搞定,问题是在集成时会有坑。最近在做这个分享问题利用微信idk公司既不让用友盟也不让用sharesdk,不过也不是很难,在集成的过程中按照微信开发者平台 iOS开发指南:iOS开发指南 别偷懒,按照步骤一步步走!!!
因为公司需求是只需要两个功能发送好友以及分享至朋友圈并并且还是分享的url,分享文本,照片方法看文档;所以我的工作还是很好弄的(主要在集成后测试功能时被坑了,一定要看API说明,不然你找不到你哪错了,我找了一下午,后面说!)
上代码:
分享类型枚举
typedef NS_ENUM(NSInteger, CRMShareType) {
CRMShareTypeFriends, // 好友
CRMShareTypeTimeline, // 朋友圈
};
分享后返回码枚举
typedef NS_ENUM(int, CRMErrorCode){
CRMShareSuccess = 0, //分享成功
CRMUserCancleShare = -2, //取消分享
CRMShareFailed, //分享失败
};
分享后block操作
typedef void(^CrmShareCompleteBlock)(int);
//把这个方法开在.h文件中,也就是调用此方法,只需要传一个model就可以了,具体的操作在.m文件中完成
- (void)shareContentWithType:(CRMShareType)type
model:(CRMShareModel *)model
complete:(CrmShareCompleteBlock)complete {
self.completeBlock = complete;
self.shareModel = model;
if (0 == _shareModel.shareUrlStr.length) {
//分享url不为空,一定要看这里
_shareModel.shareUrlStr = @"";
}
//执行分享方法
[self shareContentWithType:type
title:self.shareModel.shareTitle
description:self.shareModel.shareDescription
icon:nil
url:self.shareModel.shareUrlStr
complete:self.completeBlock];
}
在上面的方法中一定要注意,分享的url不能为nil,为空会出现各种坑,首选不可以跳转,其次发送给好友时发送不成功;自己遇到坑就注意了。。。。。。
/**
* 调用分享API
*
* @param type <#type description#>
* @param title <#title description#>
* @param description <#description description#>
* @param icon <#icon description#>
* @param webUrl <#webUrl description#>
* @param complete <#complete description#>
*/
- (void)shareContentWithType:(CRMShareType)type
title:(NSString *)title
description:(NSString *)description
icon:(UIImage *)icon
url:(NSString*)webUrl
complete:(CrmShareCompleteBlock)complete{
// 1.构建一个发送主体
WXMediaMessage *message = [WXMediaMessage message];
// 2.分享内容标题
message.title = title;
// 3.分享内容描述
message.description = description;
// 4.判断是否有分享应用程序icon
if (nil == icon) {
//若无责显示默认占位图
[message setThumbImage:nil];
}else{
//若有则显示应用icon
[message setThumbImage:icon];
}
// 5.构建分享链接对象
WXWebpageObject *webpageObject = [WXWebpageObject object];
// 6.分享链接 (网页的url地址 不能为空且长度不能超过10K)
webpageObject.webpageUrl = webUrl;
message.mediaObject = webpageObject;
// 7.分享至好友或朋友圈没问题
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
SendMessageToWXResp *resq = [[SendMessageToWXResp alloc] init];
req.message = message;
// 8.发送消息的类型可以是文本、多媒体;
//但只能是一个 no是不发送文本
//若发送文本内容选择 yes
req.bText = NO;
// 9.发消息给微信平台
if (CRMShareTypeFriends == type) {
req.scene = WXSceneSession;
[WXApi sendReq:req];
if (self.completeBlock) {
complete(resq.errCode);
}
}else if (CRMShareTypeTimeline == type){
req.scene = WXSceneTimeline;
[WXApi sendReq:req];
if (self.completeBlock) {
complete(resq.errCode);
}
}
}
之后在整理sharesdk的分享集成方法!