iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
来源:互联网 发布:西安seo工资待遇 编辑:程序博客网 时间:2024/05/18 01:13
[摘要:写的比拟匆匆,首要是本身看,有没有邃晓的便留行给我吧 起首appdelegate中到场 - ( BOOL )application:( UIApplication *)application openURL:( NSURL *)url sourceApplication:( NSString *)sourceApplication annotation:( i]
3.微信(跟微博几乎一样)
写的比较仓促,主要是自己看,有不明白的就留言给我吧
首先appdelegate中加入
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [WXApi handleOpenURL:url delegate:self] || [TencentOAuth HandleOpenURL:url] || [WeiboSDK handleOpenURL:url delegate:self];// return [WXApi handleOpenURL:url delegate:self] || [QQApi handleOpenURL:url] || [WeiboSDK handleOpenURL:url delegate:self];}- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [WXApi handleOpenURL:url delegate:self] || [TencentOAuth HandleOpenURL:url] || [WeiboSDK handleOpenURL:url delegate:self];// return [WXApi handleOpenURL:url delegate:self] || [QQApi handleOpenURL:url] || [WeiboSDK handleOpenURL:url delegate:self];}
1、QQ分享(QQ空间、QQ会话)
首先在Targets中的info中选择URL Types添加QQ的信息,在identifier中写tencent 在URL Schemes中添加你的你们公司申请的appid,格式为"tencent+appid"。
你可以下载一份QQ提供的Demo看看,在你需要分享的页面导入其头文件
#import "TencentRequest.h"
#import "TencentOpenAPI/QQApiInterface.h"
#import <objc/runtime.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMessageComposeViewController.h>
#import "TencentOpenAPI.framework/Headers/TencentOAuth.h"
大概也就上边这些,就足够
然后首先在你分享的代码前加上这一句,类似于微信以及微博的注册appid,但是QQ的比较奇葩,也可能是我写的就比较奇葩,其中的调用方法在下面,直接拿过来用就好了
TencentOAuth * tencentOAuth = [[TencentOAuthalloc]initWithAppId:AppIDForQQandDelegate:self];下面是分享网络图片的代码,我分享的是新闻类的所以在初始化的时候选用了
NSString *url =@"sports.qq.com/nba/"; NSString *utf8String =@"http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&ipn=d&word=越前龙马&step_word=越前龙马&pn=33&spn=0&di=91758034940&pi=&rn=1&is=&istype=&ie=utf-8&oe=utf-8&in=32663&cl=2&lm=-1&st=&cs=3048474619%2C1612991872&os=2035090878%2C1902782440&adpicid=0&ln=1000&fr=acint&fmq=1422327488759_R&ic=&s=&se=&sme=0&tab=&width=&height=&face=&ist=&jit=&cg=&objurl=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201207%2F26%2F20120726071437_BhyLf.thumb.600_0.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3F4_z%26e3B17tpwg2_z%26e3Bv54AzdH3Frj5rsjAzdH3F4ks52AzdH3F8cml9anmnAzdH3F1jpwtsAzdH3F";QQApiNewsObject *newsObj = [QQApiNewsObject objectWithURL:[NSURL URLWithString:url] title:@"腾讯空间分享测试Demo" description:@"貌似有点明白了" previewImageURL:[NSURL URLWithString:utf8String]]; [newsObj setCflag:[self shareControlFlags]]; SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:newsObj]; QQApiSendResultCode sent =0; sent = [QQApiInterfaceSendReqToQZone:req];// sent = [QQApiInterface sendReq:req];//这是分享到QQ [selfhandleSendResult:sent];//这是分享到空间//下面是分享本地图片的代码,其实主要是初始化方式不同,在此不再多说 NSString *imagePath = [[NSBundlemainBundle] pathForResource:@"LOGO"ofType:@"png"]; NSData *imgData = [NSData dataWithContentsOfFile:imagePath]; QQApiNewsObject *imgObj = [QQApiNewsObjectobjectWithURL:[NSURLURLWithString:url]title:@"腾讯分享测试Demo"description:@"我擦。快来啪啪啪"previewImageData:imgData]; [imgObj setCflag:[selfshareControlFlags]]; SendMessageToQQReq *req = [SendMessageToQQReqreqWithContent:imgObj]; QQApiSendResultCode sent =0;// sent = [QQApiInterface SendReqToQZone:req];//空间分享 sent = [QQApiInterfacesendReq:req];//QQ分享 [selfhandleSendResult:sent];- (uint64_t)shareControlFlags{ NSDictionary *context = [self currentNavContext]; __block uint64_t cflag = 0; [context enumerateKeysAndObjectsUsingBlock:^(id key,id obj, BOOL *stop) { if ([obj isKindOfClass:[NSNumberclass]] && [key isKindOfClass:[NSString class]] && [key hasPrefix:@"kQQAPICtrlFlag"]) { cflag |= [objunsignedIntValue]; } }]; return cflag;}- (NSMutableDictionary *)currentNavContext{ UINavigationController *navCtrl = [selfnavigationController]; NSMutableDictionary *context = objc_getAssociatedObject(navCtrl,objc_unretainedPointer(@"currentNavContext")); if (nil == context) { context = [NSMutableDictionarydictionaryWithCapacity:3]; objc_setAssociatedObject(navCtrl,objc_unretainedPointer(@"currentNavContext"), context,OBJC_ASSOCIATION_RETAIN_NONATOMIC); } return context;}- (void)handleSendResult:(QQApiSendResultCode)sendResult{ switch (sendResult) { caseEQQAPIAPPNOTREGISTED: { UIAlertView *msgbox = [[UIAlertViewalloc] initWithTitle:@"Error"message:@"App未注册"delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:nil]; [msgboxshow]; break; } caseEQQAPIMESSAGECONTENTINVALID: caseEQQAPIMESSAGECONTENTNULL: caseEQQAPIMESSAGETYPEINVALID: { UIAlertView *msgbox = [[UIAlertViewalloc] initWithTitle:@"Error"message:@"发送参数错误"delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:nil]; [msgboxshow]; break; } caseEQQAPIQQNOTINSTALLED: { UIAlertView *msgbox = [[UIAlertViewalloc] initWithTitle:@"Error"message:@"未安装手Q"delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:nil]; [msgboxshow]; break; } caseEQQAPIQQNOTSUPPORTAPI: { UIAlertView *msgbox = [[UIAlertViewalloc] initWithTitle:@"Error"message:@"API接口不支持"delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:nil]; [msgboxshow]; break; } caseEQQAPISENDFAILD: { UIAlertView *msgbox = [[UIAlertViewalloc] initWithTitle:@"Error"message:@"发送失败"delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:nil]; [msgboxshow]; break; } caseEQQAPIQZONENOTSUPPORTTEXT: { UIAlertView *msgbox = [[UIAlertViewalloc] initWithTitle:@"Error"message:@"空间分享不支持纯文本分享,请使用图文分享"delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:nil]; [msgboxshow]; break; } caseEQQAPIQZONENOTSUPPORTIMAGE: { UIAlertView *msgbox = [[UIAlertViewalloc] initWithTitle:@"Error"message:@"空间分享不支持纯图片分享,请使用图文分享"delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:nil]; [msgboxshow]; break; } default: { break; } }}
2.新浪微博
首先同样在你的Targets中的Info中选择URL Types,ldentifier填写com.weibo Url Schemes中写wb+appid
在appdelegate中的didfinishlaunch中注册微博的appid
[WeiboSDKregisterApp:@"你的appid"];
分享代码如下
#pragma mark - 分享到微博- (void)shareFriend{ AppDelegate *myDelegate =(AppDelegate*)[[UIApplicationsharedApplication] delegate]; WBAuthorizeRequest *authRequest = [WBAuthorizeRequestrequest]; authRequest.redirectURI =@"www.baidu.com"; authRequest.scope =@"all"; WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequestrequestWithMessage:[selfmessageToShare]authInfo:authRequestaccess_token:myDelegate.wbtoken]; request.userInfo =@{@"ShareMessageFrom":@"ChatRootViewController", @"Other_Info_1": [NSNumbernumberWithInt:123], @"Other_Info_2": @[@"obj1",@"obj2"], @"Other_Info_3":@{@"key1": @"obj1", @"key2": @"obj2"}}; // request.shouldOpenWeiboAppInstallPageIfNotInstalled = NO; [WeiboSDKsendRequest:request];}- (WBMessageObject *)messageToShare{ WBMessageObject *message = [WBMessageObjectmessage]; // if (self.textSwitch.on) // { // message.text = NSLocalizedString(@"测试通过WeiboSDK发送文字到微博!", nil); // } // // if (self.imageSwitch.on) // { // WBImageObject *image = [WBImageObject object]; // image.imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image_1" ofType:@"jpg"]]; // message.imageObject = image; // } // // if (self.mediaSwitch.on) // { WBWebpageObject *webpage = [WBWebpageObjectobject]; webpage.objectID =@"identifier1"; webpage.title =NSLocalizedString(@"分享网页标题wwww",nil); webpage.description = [NSStringstringWithFormat:NSLocalizedString(@"测试来自你的应用名称-%.0f",nil), [[NSDatedate] timeIntervalSince1970]]; webpage.thumbnailData = [NSDatadataWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"生气"ofType:@"png"]]; webpage.webpageUrl =@"http://www.baidu.com"; message.mediaObject = webpage; // } return message;}
3.微信(跟微博几乎一样)
#pragma mark - 分享朋友圈//- (void)shareFriend{// WXMediaMessage *message = [WXMediaMessage message];// message.title = @"专访王尼玛:产品之上的毁我世界观";// message.description = @"微信的平台化发展方向是否真的会让这个原本简洁的产品变得臃肿?在国际化发展方向上,微信面临的问题真的是文化差异壁垒吗?腾讯高级副总裁、微信产品负责人张小龙给出了自己的回复。";// [message setThumbImage:[UIImage imageNamed:@"res2.png"]];// // WXWebpageObject *ext = [WXWebpageObject object];// ext.webpageUrl = @"http://tech.qq.com/zt2012/tmtdecode/252.htm";// // message.mediaObject = ext;// message.mediaTagName = @"WECHAT_TAG_JUMP_SHOWRANK";// // SendMessageToWXReq* req = [[SendMessageToWXReq alloc] init];// req.bText = NO;// req.message = message;// req.scene = WXSceneTimeline;// [WXApi sendReq:req];//}4.分享邮件以及短信//- (void)shareFriend{// Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));// if (mailClass != nil) {// if ([mailClass canSendMail]) {// [self displayMailComposerSheet];// } else {// UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@""message:@"设备不支持邮件功能" delegate:self cancelButtonTitle:@"确定"otherButtonTitles:nil];// // [alert show];// }// } else {// // }//}////-(void)displayMailComposerSheet////{// // MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];// // // // picker.mailComposeDelegate =self;// // // // [picker setSubject:@"文件分享"];// // Set up recipients// // NSArray *toRecipients = [NSArray arrayWithObject:@"first@qq.com"];// // NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@qq.com",@"third@qq.com", nil];// // NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@qq.com"];// // // // // // [picker setToRecipients:toRecipients];// // [picker setCcRecipients:ccRecipients];// // [picker setBccRecipients:bccRecipients];// // //发送图片附件// // //NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];// // //NSData *myData = [NSData dataWithContentsOfFile:path];// // //[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy.jpg"];// // // // //发送txt文本附件// // //NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"txt"];// // //NSData *myData = [NSData dataWithContentsOfFile:path];// // //[picker addAttachmentData:myData mimeType:@"text/txt" fileName:@"MyText.txt"];// // // // //发送doc文本附件// // //NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"doc"];// // //NSData *myData = [NSData dataWithContentsOfFile:path];// // //[picker addAttachmentData:myData mimeType:@"text/doc" fileName:@"MyText.doc"];// // // // //发送pdf文档附件// // /*// // NSString *path = [[NSBundlemainBundle] pathForResource:@"CodeSigningGuide"ofType:@"pdf"];// // NSData *myData = [NSDatadataWithContentsOfFile:path];// // [pickeraddAttachmentData:myData mimeType:@"file/pdf"fileName:@"rainy.pdf"];// // */// // // // // // // Fill out the email body text// // NSString *emailBody =[NSString stringWithFormat:@"我分享了文件给您,地址是www.imyeliao.com"] ;// // [picker setMessageBody:emailBody isHTML:NO];// // [self presentViewController:picker animated:YES completion:nil];//}////- (void)mailComposeController:(MFMailComposeViewController*)controller//// didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {// // // // // // // Notifies users about errors associated with the interface// // switch (result)// // {// // caseMFMailComposeResultCancelled:// // NSLog(@"Result: Mail sending canceled");// // break;// // caseMFMailComposeResultSaved:// // NSLog(@"Result: Mail saved");// // break;// // caseMFMailComposeResultSent:// // NSLog(@"Result: Mail sent");// // break;// // caseMFMailComposeResultFailed:// // NSLog(@"Result: Mail sending failed");// // break;// // default:// // NSLog(@"Result: Mail not sent");// // break;// // }// // [self dismissViewControllerAnimated:YES completion:nil];// //}////短信////-(void)shareFriend{// // Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));// // // // if (messageClass != nil) {// // // Check whether the current device is configured for sending SMS messages// // if ([messageClass canSendText]) {// // [self displaySMSComposerSheet];// // }// // else {// // UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@""message:@"设备不支持短信功能" delegate:self cancelButtonTitle:@"确定"otherButtonTitles:nil];// // [alert show];// // // // // }// // }// // else {// // }// //}////-(void)displaySMSComposerSheet////{// // MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];// // picker.messageComposeDelegate =self;// // NSString *smsBody =[NSString stringWithFormat:@"我分享了文件给您,地址是www.imyeliao.com"] ;// // picker.body=smsBody;// // [self presentViewController:picker animated:YES completion:nil];// //}////- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{// // Notifies users about errors associated with the interface// switch (result) {// case MessageComposeResultCancelled:// if (DEBUG) NSLog(@"Result: canceled");// break;// case MessageComposeResultSent:// if (DEBUG) NSLog(@"Result: Sent");// break;// case MessageComposeResultFailed:// if (DEBUG) NSLog(@"Result: Failed");// break;// default:// break;// }// [self dismissViewControllerAnimated:YES completion:nil];//}
0 0
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- Android使用官方API分享内容到QQ和微信(非第三方集成)
- 集成友盟第三方登录(qq、微信、微信朋友圈、新浪)、分享
- 最详细Android集成QQ,微信,微博分享(不用第三方)
- 集成微信的第三方分享
- iOS 集成 第三方 QQ
- iOS 集成 第三方 微信
- 常用微信集成(第三方sdk集成套路)-- 微信分享
- 微信、qq、微博第三方分享集成封装代码
- 史上最详细Android集成QQ,微信,微博分享(不用第三方)持续更新中
- 史上最详细Android集成QQ,微信,微博分享(不用第三方)持续更新中
- 友盟集成第三方步骤(微信、QQ、微博)
- 友盟集成第三方步骤(微信、QQ、微博)
- ios 微信分享,QQ分享,微博分享集成
- 友盟集成第三方登录--微信、QQ实现
- IOS CocoaPods 集成第三方sharesdk分享
- 【DM】设计模式再回顾---职责单一+开放-封闭
- COM技术内幕读书笔记————动态链接和组件
- base之string_piece
- 栈之下一较大值二
- 【设计模式】## 1、单例设计模式 ##
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- Android加载动画系列——GearsLoadingAnim
- 文章标题
- c/c++第六天
- linux安装Telnet工具
- 数据结构实验之栈五:下一较大值(一)
- postgresql数据类型
- Hdu 3368 Reversi(暴力)
- org.hibernate.InvalidMappingException: Could not parse mapping document from resource