在此說明:這個文章時直接 copy 別人的,我沒有做過測試
實現時依賴的sdk版本
'Weibo', '3.2.4'
spec.dependency 'TencentOpenApiSDK', '~> 3.3.6'(3.3.5開始qq小程序)
spec.dependency 'WechatOpenSDK', '1.8.5'
微信分享,分享小程序
//微信註冊
[WXApi registerApp:string];
// 檢測是否安裝微信
if (![WXApi isWXAppInstalled] || ![WXApi isWXAppSupportApi]) {
return;
}
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
if (shareType == ShareToWeChat) {
req.scene = WXSceneSession;//對話列表
} else {
req.scene = WXSceneTimeline; // 朋友圈
}
WXMediaMessage *message = [WXMediaMessage message];
WXWebpageObject *page = [WXWebpageObject object];
page.webpageUrl = url;
// 設置縮略圖
message.thumbData = shareImageData;
message.mediaObject = page;
message.title =@"title";
message.description = @"描述";
//分享到小程序
if(req.scene == WXSceneSession){
WXMiniProgramObject *wxMiniObject = [WXMiniProgramObject object];
wxMiniObject.webpageUrl =url;
wxMiniObject.userName = @"xxx";
wxMiniObject.path = @"xx";
wxMiniObject.hdImageData = data;
#ifdef DEBUG
wxMiniObject.miniProgramType = WXMiniProgramTypeTest;
#endif
message.mediaObject = wxMiniObject;
}
req.message = message;
[WXApi sendReq:req];
qq分享,分享qq小程序
//qq註冊
[[TencentOAuth alloc] initWithAppId:string andDelegate:nil];
if (![QQApiInterface isQQInstalled]) {
return;
}
QQApiObject * shareObj = [QQApiVideoObject objectWithURL:[NSURL URLWithString:link] title:shareTitle description:@"zzz" previewImageData:imageData];
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:shareObj];
[QQApiInterface sendReq:req];
//小程序 3.3.5以及之後的sdk纔行
QQApiVideoObject *videoObj = [QQApiVideoObject objectWithURL:[NSURL URLWithString:link] title:shareTitle description:@"aa"previewImageData:imageData;
videoObj.cflag |= kQQAPICtrlFlagQQShareEnableMiniProgram;
if (shareType == ShareToQzone) {
//如果是發到空間還需要打開下面一句
videoObj.cflag |= kQQAPICtrlFlagQZoneShareOnStart;
}
//小程序消息對象
QQApiMiniProgramObject *miniObj = [QQApiMiniProgramObject new];
miniObj.qqApiObject = videoObj;
miniObj.miniAppID = miniObj.miniAppID;
miniObj.webpageUrl = link;
if ([str containsString:@"?"]) { //不轉有的參數傳不到小程序,這裏需要看看
NSArray<NSString *> *ary = [str componentsSeparatedByString:@"?"];
str = [NSString stringWithFormat:@"%@?%@",ary.firstObject,[ary.lastObject URLEncodedString]];
}
miniObj.miniPath = str;
#ifdef DEBUG
miniObj.miniprogramType = MiniProgramType_Test;
#endif
req = [SendMessageToQQReq reqWithMiniContent:miniObj];
QQApiSendResultCode sent = [QQApiInterface sendReq:req];
分享到微博
//微博註冊
[WeiboSDK registerApp:string];
//沒有安裝微博
if (![WeiboSDK isWeiboAppInstalled]) {
return;
}
WBWebpageObject *webPage = [WBWebpageObject object];
webPage.title =@"dd";
webPage.webpageUrl = url;
webPage.description = @"aaaa";
webPage.objectID = webPage.webpageUrl;
webPage.thumbnailData =shareImageData
message.mediaObject = webPage;
message.text =@"ss";
WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:message];
request.userInfo = @{@"SendMessageFrom" : @"SendMessageToWeiboViewController"};
[WeiboSDK sendRequest:request];
AppDelegate實現
WeiboSDKDelegate(微博代理),
WXApiDelegate(微信代理),
QQApiInterfaceDelegate(qq代理)
三個代理可以分別處理分享後來自微博,微信,qq終端程序的事件消息