摇一摇截屏相关功能 -- 集成文档
1 添加摇一摇截屏分享所需的依赖
我们将摇一摇的资源放到UMSocial_Sdk_Extra_Frameworks/UMSocial_Shake_Sdk和UMSocial_Sdk_Extra_Frameworks/UMSocial_ScreenShot_Sdk这两个文件夹下,包括:
-
UMSocial_Shake_Sdk下的libUMSocial_Sdk_Shake_x.x.a和UMSocial_ScreenShot_Sdk下的libUMSocial_Sdk_ScreenShot_x.x.a,分别表示摇一摇的sensor和截屏工具库;
-
注意:使用截屏SDK,需要添加OpenGLES.framework和MediaPlayer.framework。添加方法:选你的target->Build Phases->Link Binary With Libraries->添加OpenGLES.framework、MediaPlayer.framework。
请按您需要的功能模块添加分享组件,资源包。
功能 | 需集成分享组件 | 需libUMSocial_Sdk_Shake.a | 需libUMSocial_Sdk_ScreenShot.a |
---|---|---|---|
摇一摇截屏分享 | 是 | 是 | 是 |
摇一摇打开分享面板 | 是 | 是 | |
直接截屏 | 是 | ||
截屏-分享 | 是 | 是 |
2 摇一摇相关各种功能,请按需集成
2.1 摇一摇截图分享
2.1.1 注册监听摇一摇事件,默认摇一摇后,自动截屏并弹出分享页面
/**
设置响应摇一摇事件,并且弹出分享页面
@param snsTypes 要分享的平台类型名,例如@[UMShareToSina,UMShareToTencent,UMShareToWechatSession]
@param shareText 分享内嵌文字
@param screenShoter 摇一摇分享用到的截屏对象
@param controller 出现分享界面所在的ViewController
@param delegate 实现摇一摇后,或者分享完成后的回调对象,如果不处理这些事件,可以设置为nil
*/
+(void)setShakeToShareWithTypes:(NSArray *)snsTypes
shareText:(NSString *)shareText
screenShoter:(UMSocialScreenShoter *)screenShoter
inViewController:(UIViewController *)controller
delegate:(id<UMSocialShakeDelegate>)delegate;
2.1.2 普通应用注册摇一摇截图分享
[UMSocialScreenShoterDefault screenShoter]为普通应用的截屏适配器,负责截屏操作,示例代码如下:
[UMSocialShakeService setShakeToShareWithTypes:@[UMShareToSina,UMShareToWechatSession]
shareText:@"你的分享文字"
screenShoter:[UMSocialScreenShoterDefault screenShoter]
inViewController:self
delegate:nil];
2.1.3 使用Cocos2d开发的游戏注册摇一摇截图分享
[UMSocialScreenShoterCocos2d screenShoterFromEaglView:[CCDirector sharedDirector].view]
为cocos2d游戏的截屏适配器,负责截屏操作,示例代码如下:
AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
[UMSocialShakeService setShakeToShareWithTypes:@[UMShareToSina,UMShareToTencent,UMShareToWechatSession] shareText:@"test" screenShoter:[UMSocialScreenShoterCocos2d screenShoterFromEaglView:[CCDirector sharedDirector].view] inViewController:[app navController] delegate:nil];
2.1.4 使用MediaPlayer播放视频的应用实现摇一摇截图分享
如果使用iOS系统的MediaPlayer播放器,播放本地视频,可以用下面的方式得到截图分享。
//player为你当前的'MPMoviePlayerController'播放器对象
[UMSocialShakeService setShakeToShareWithTypes:@[UMShareToSina,UMShareToWechatSession]
shareText:@"你的分享文字"
screenShoter:[UMSocialScreenShoterMediaPlayer screenShoterFromMoviePlayer:player]
inViewController:self
delegate:nil];
若需要截取流媒体图像,则需开发者自行获取到视频图像,并且通过自定义截图适配器的方式将图像返回.
注意在离开此视图时解除监听摇一摇事件
2.1.5 其他使用场景实现摇一摇截图分享
设置响应摇一摇回调,并在回调中设置截图,示例代码如下:
-(UMSocialShakeConfig)didShakeWithShakeConfig
{
//相应摇一摇后,你可以用自己的播放器得到截图
[UMSocialShakeService setScreenShotImage:[UIImage imageNamed:@"UMS_social_demo"]];
return UMSocialShakeConfigDefault;
}
//下面注册响应摇一摇动作
[UMSocialShakeService setShakeToShareWithTypes:@[UMShareToSina,UMShareToTencent,UMShareToWechatSession,UMShareToWechatTimeline]
shareText:shareText
screenShoter:nil
inViewController:self
delegate:self];
2.1.6 摇一摇截图分享效果图
2.2 摇一摇打开分享面板
使用上面的方法摇一摇功能后,用户可以需要摇一摇手机,即可打开友盟的分享面板,不需要用户点击相关的按钮调出分享面板,用户体验较好。 示例代码如下:
[UMSocialShakeService setShakeToShareWithTypes:nil
shareText:nil
screenShoter:nil
inViewController:self
delegate:self];
//在摇一摇的回调方法弹出分享面板
-(UMSocialShakeConfig)didShakeWithShakeConfig
{
[UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:@"你的分享文字" shareImage:shareImage shareToSnsNames:@[UMShareToSina,UMShareToTencent,UMShareToWechatSession,UMShareToWechatTimeline] delegate:nil];
//下面返回值控制是否显示分享编辑页面、是否显示截图、是否有音效,UMSocialShakeConfigNone表示都不显示
return UMSocialShakeConfigNone;
}
2.3 注销摇一摇监听
不需要响应摇一摇动作调用如下代码:
[UMSocialShakeService unShakeToSns];
2.4 摇一摇接口
若使用摇一摇功能,直接使用iOS系统提供的监听摇一摇事件回调,你可以在当前ViewController视图控制器中使用下面的代码:
-(BOOL)canBecomeFirstResponder {
return YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
//设置第一响应者
[self becomeFirstResponder];
}
//在响应摇一摇动作方法内得到屏幕截图
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent*)event
{
if(motion == UIEventSubtypeMotionShake)
{
//下面使用应用类型截屏,如果是cocos2d游戏或者其他类型,使用相应的截屏对象
//UIImage *image = [[UMSocialScreenShoterDefault screenShoter] getScreenShot];
}
}
2.5 屏幕截图接口
该功能为直接截取用户的屏幕图像,要使用该功能需要将UMSocial_ScreenShot_Sdk文件夹下的库文件和头文件添加到工程中,示例如下:
//下面是应用类型的截图,如果是游戏或者其他方式截图,请参考2.1.4 和2.1.5
UIImage *image = [[UMSocialScreenShoterDefault screenShoter] getScreenShot];
2.6 截图后分享
该功能是在用户打开分享面板时,将要分享的图像内容替换为当前应用截图,要使用该功能需要将 UMSocial_ScreenShot_Sdk文件夹添加到工程的中,示例如下:
UIImage *image = [[UMSocialScreenShoterDefault screenShoter] getScreenShot];
[UMSocialSnsService presentSnsIconSheetView:self appKey:UmengAppkey shareText:@"分享文字" shareImage:image shareToSnsNames:nil delegate:nil];
2.7 摇一摇灵敏度设置
可根据应用类型灵活设置响应摇一摇事件的灵敏度,示例如下:
//可以设置响应摇一摇阈值,数值越低越灵敏,默认是0.8
[UMSocialShakeService setShakeThreshold:1.5];
3 技术支持
请发邮件至social-support@umeng.com。如果您出现的问题和SDK相关,请说明您使用的是iOS的SDK,我们会尽快回复您。