cocos2d-x下使用ShareSDK进行微博分享之iOS平台
来源:互联网 发布:中学生题库软件 编辑:程序博客网 时间:2024/05/01 23:20
分享的原理很简单与iOS或Android下没有什么太大的区别。这篇是iOS平台的之后再写一篇Android平台的。
需要注意的C++如何去调用OC的方法,解决这个问题就解决了。
我们先说一下思路C++调用OC的方法,需要一个C的函数作为中转。
下面我们直接看代码吧。
先导入ShareSDK的第三方库。如果不会参考这边文章。
http://blog.csdn.net/qqmcy/article/details/10371957
先创建一个OC的类:
ShareViewController.h
//// ShareViewController.h// Dome//// Created by 杜甲 on 13-9-20.////#import <UIKit/UIKit.h>@interface ShareViewController : UIViewController-(void)shareMothed;- (void)shareToSinaWeiboClickHandler;-(void)loginSina;@end
//// ShareViewController.m// Dome//// Created by 杜甲 on 13-9-20.////#import "ShareViewController.h"#import <ShareSDK/ShareSDK.h>#define BUNDLE_NAME @"Resource"#define IMAGE_NAME @"sharesdk_img"#define IMAGE_EXT @"jpg"#define CONTENT @"ShareSDK不仅集成简单、支持如QQ好友、微信、新浪微博、腾讯微博等所有社交平台,而且还有强大的统计分析管理后台,实时了解用户、信息流、回流率、传播效应等数据,详情见官网http://sharesdk.cn @ShareSDK"#define SHARE_URL @"http://www.sharesdk.cn"@interface ShareViewController ()@end@implementation ShareViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self;}-(void)loginSina{ [ShareSDK getUserInfoWithType:ShareTypeSinaWeibo authOptions :nil result:^(BOOL result, id<ISSUserInfo> userInfo, id<ICMErrorInfo> error) { if (result) { NSLog(@"%@",userInfo.nickname); } else { NSLog(@"失败"); } }]; }-(void)shareMothed{ printf("fffbbbbbbbbbbb\n");}- (void)shareToSinaWeiboClickHandler{ //创建分享内容 NSString *imagePath = [[NSBundle mainBundle] pathForResource:IMAGE_NAME ofType:IMAGE_EXT]; id<ISSContent> publishContent = [ShareSDK content:CONTENT defaultContent:@"" image:[ShareSDK imageWithPath:imagePath] title:nil url:nil description:nil mediaType:SSPublishContentMediaTypeText]; //创建弹出菜单容器 id<ISSContainer> container = [ShareSDK container]; [container setIPadContainerWithView:nil arrowDirect:UIPopoverArrowDirectionUp]; id<ISSAuthOptions> authOptions = [ShareSDK authOptionsWithAutoAuth:YES allowCallback:YES authViewStyle:SSAuthViewStyleFullScreenPopup viewDelegate:nil authManagerViewDelegate:nil]; //在授权页面中添加关注官方微博 [authOptions setFollowAccounts:[NSDictionary dictionaryWithObjectsAndKeys: [ShareSDK userFieldWithType:SSUserFieldTypeName value:@"ShareSDK"], SHARE_TYPE_NUMBER(ShareTypeSinaWeibo), [ShareSDK userFieldWithType:SSUserFieldTypeName value:@"ShareSDK"], SHARE_TYPE_NUMBER(ShareTypeTencentWeibo), nil]]; //显示分享菜单 [ShareSDK showShareViewWithType:ShareTypeSinaWeibo container:container content:publishContent statusBarTips:YES authOptions:authOptions shareOptions:[ShareSDK defaultShareOptionsWithTitle:nil oneKeyShareList:[NSArray defaultOneKeyShareList] qqButtonHidden:NO wxSessionButtonHidden:NO wxTimelineButtonHidden:NO showKeyboardOnAppear:NO shareViewDelegate:nil friendsViewDelegate:nil picViewerViewDelegate:nil] result:^(ShareType type, SSPublishContentState state, id<ISSStatusInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) { if (state == SSPublishContentStateSuccess) { NSLog(@"发表成功"); } else if (state == SSPublishContentStateFail) { NSLog(@"发布失败!error code == %d, error code == %@", [error errorCode], [error errorDescription]); } }];}- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view.}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
创建一个C++的类作为中转,这个C++的类要将.cpp改为.mm这样才能C++与OC混编
ChannelClass.h
//// ChannelClass.h// Dome//// Created by 杜甲 on 13-9-20.////#ifndef __Dome__ChannelClass__#define __Dome__ChannelClass__#include "cocos2d.h"USING_NS_CC;class ChannelClass{ public: void channel(); };#endif /* defined(__Dome__ChannelClass__) */
ChannelClass.mm
//// ChannelClass.cpp// Dome//// Created by 杜甲 on 13-9-20.////#include "ChannelClass.h"#include "ShareViewController.h"void shareMothed(){ ShareViewController* share = [[ShareViewController alloc]init]; printf("ffff\n"); [share shareToSinaWeiboClickHandler];}void ChannelClass::channel(){ shareMothed();}
这样我们只要调用这个C++中分享的函数就OK了。
HelloWorldScene.h
#ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__#include "cocos2d.h"#include "ChannelClass.h"class HelloWorld : public cocos2d::CCLayer{public: // Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer) virtual bool init(); ChannelClass* channel; // there's no 'id' in cpp, so we recommend to return the class instance pointer static cocos2d::CCScene* scene(); // a selector callback void menuCloseCallback(CCObject* pSender); // preprocessor macro for "static create()" constructor ( node() deprecated ) CREATE_FUNC(HelloWorld);};#endif // __HELLOWORLD_SCENE_H__
HelloWorldScene.cpp
#include "HelloWorldScene.h"#include "SimpleAudioEngine.h"using namespace cocos2d;using namespace CocosDenshion;CCScene* HelloWorld::scene(){ // 'scene' is an autorelease object CCScene *scene = CCScene::create(); // 'layer' is an autorelease object HelloWorld *layer = HelloWorld::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene;}// on "init" you need to initialize your instancebool HelloWorld::init(){ ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } channel = new ChannelClass(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object CCMenuItemImage *pCloseItem = CCMenuItemImage::create( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback) ); pCloseItem->setPosition( ccp(100, 200)); // create menu, it's an autorelease object CCMenu* pMenu = CCMenu::create(pCloseItem, NULL); pMenu->setPosition( CCPointZero ); this->addChild(pMenu, 1); return true;}void HelloWorld::menuCloseCallback(CCObject* pSender){ channel->channel(); }
这样就OK了。
下面是代码例子的下载地址:
http://pan.baidu.com/share/link?shareid=1722659878&uk=3189484501
- cocos2d-x下使用ShareSDK进行微博分享之iOS平台
- cocos2d-x 集成社交分享平台shareSDK
- cocos2d-x 集成社交分享平台shareSDK
- cocos2d-x 集成社交分享平台shareSDK
- cocos2d-x 集成社交分享平台shareSDK
- cocos2d-x手机游戏(IOS版本)接入分享shareSDK(新浪微博和微信分享)记录
- iOS shareSDK进行分享
- cocos2d-x集成sharesdk做微信分享android,ios
- IOS 使用ShareSDK进行QQ,微信,新浪微博分享失败经验
- cocos2d-x集成shareSDK一键分享
- iOS项目开发实战——使用ShareSDK进行QQ和微信分享
- Cocos2d-x游戏在Android平台使用友盟社会化组件进行截图分享的实现
- Android进阶之使用第三方平台ShareSDK实现新浪微博的一键分享功能
- iOS ShareSDK 分享到新浪微博
- iOS ShareSDK 分享到新浪微博
- 【Android进阶】使用第三方平台 ShareSDK 实现新浪微博的一键分享功能
- 使用第三方平台 ShareSDK 实现新浪微博的一键分享功能
- 【Android进阶】使用第三方平台 ShareSDK 实现新浪微博的一键分享功能
- DMA数据传输过程
- POJ 1472 Instant Complexity
- 2011Google校园招聘笔试题
- android中LayoutInflater的使用
- 视频参数(流媒体系统,封装格式,视频编码,音频编码,播放器)对比
- cocos2d-x下使用ShareSDK进行微博分享之iOS平台
- 腾讯实习生招聘笔试
- Merge Sorted Array
- 给定字符串先序和中序遍历,求后序遍历
- iOS 开发者必不可少的 75 个工具
- 用adb命令删除系统自带launcher
- andengine游戏引擎总结进阶篇2
- 最大子序列和问题
- C++学习笔记1C++开发环境搭建创建第一个项目Hello word!