Commit 5d4d2042 authored by wind.wang's avatar wind.wang

add shareImgWithBoard

parent be74417b
......@@ -61,6 +61,38 @@ public class ReactShareModule extends ReactContextBaseJavaModule {
}
}
@ReactMethod
public void shareImgWithBoard(final ReadableMap params, final Callback callback){
final Activity activity = getCurrentActivity();
if(params == null){
Toast.makeText(activity, "分享参数异常", Toast.LENGTH_SHORT).show();
return;
}
if(activity != null){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
Share.shareImgWithBoard(activity, params, new ShareListener() {
@Override
public void onResult(boolean success, String result, Throwable throwable) {
if (callback == null){
return;
}
WritableMap resultMap = Arguments.createMap();
resultMap.putBoolean("success", success);
resultMap.putString("message", result);
callback.invoke(resultMap);
}
});
}catch (Exception e){
Log.e(REACT_NAME,e.getMessage());
}
}
});
}
}
@ReactMethod
public void shareImg(final ReadableMap params, final Callback callback){
final Activity activity = getCurrentActivity();
......
......@@ -121,6 +121,71 @@ public class Share {
}).open(boardConfig);
}
public static void shareImgWithBoard(final Activity mContext, final ReadableMap params, final ShareListener listener) {
ShareBoardConfig boardConfig = new ShareBoardConfig();
boardConfig.setTitleText("分享到");
boardConfig.setCancelButtonText("取消");
boardConfig.setTitleTextColor(Color.BLACK);
boardConfig.setCancelButtonTextColor(Color.BLACK);
boardConfig.setShareboardBackgroundColor(Color.WHITE);
boardConfig.setMenuItemBackgroundColor(Color.TRANSPARENT);
boardConfig.setMenuItemBackgroundShape(ShareBoardConfig.BG_SHAPE_CIRCULAR);
boardConfig.setIndicatorVisibility(false);
ShareAction sa = new ShareAction(mContext);
sa.setDisplayList(getShareMedias());
// sa.setDisplayList(getShareMedias());
sa.setShareboardclickCallback(new ShareBoardlistener() {
@Override
public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
UMImage image = null;
String imgBase64 = params.getString("imgBase64");
String imgUrl = params.getString("imgUrl");
if(imgBase64 != null) {
Bitmap bitmap = null;
try {
byte[] bitmapArray = Base64.decode(imgBase64, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);
} catch (Exception e) {
e.printStackTrace();
}
image = new UMImage(mContext, bitmap);
} else {
image = new UMImage(mContext, imgUrl);//网络图片
}
new ShareAction(mContext).setPlatform(share_media)
.setCallback(new UMShareListener() {
@Override
public void onStart(SHARE_MEDIA share_media) {
}
@Override
public void onResult(SHARE_MEDIA share_media) {
listener.onResult(true, "", null);
}
@Override
public void onError(SHARE_MEDIA share_media, Throwable throwable) {
listener.onResult(false, throwable.getMessage(), throwable);
}
@Override
public void onCancel(SHARE_MEDIA share_media) {
Throwable throwable = new Throwable("取消分享");
listener.onResult(false, "取消分享", throwable);
}
}).withText("分享")
.withMedia(image)
.share();
}
}).open(boardConfig);
}
public static void shareImg(final Activity mContext, final ReadableMap params, final ShareListener listener) {
SHARE_MEDIA share_media = params.getString("platformType").equals("1")?SHARE_MEDIA.WEIXIN:SHARE_MEDIA.WEIXIN_CIRCLE;
// UMImage image = new UMImage(mContext, new File(params.getString("imgPath")));
......
......@@ -79,6 +79,13 @@ class Social {
}
})
}
shareImgWithBoard(args, callback) {
ReactShare.shareImgWithBoard(args, (result) => {
if (callback) {
callback(result)
}
})
}
shareImg(args, callback) {
ReactShare.shareImg(args, (result) => {
if (callback) {
......
......@@ -43,6 +43,13 @@ RCT_EXPORT_METHOD(shareImg:(NSDictionary*)params callback:(RCTResponseSenderBloc
}];
}
RCT_EXPORT_METHOD(shareImgWithBoard:(NSDictionary*)params callback:(RCTResponseSenderBlock)callback)
{
[[RNShareConfig shareInstance] shareImgWithBoardHandler:params callback:^(RNShareResponse *responseDO) {
callback(@[[responseDO serialization]]);
}];
}
@end
......
......@@ -165,12 +165,32 @@ NSString *const PayAlipayURLScheme = @"alipay://";
}
- (void)onResp:(BaseReq *)resp {
if ([resp isKindOfClass:[PayResp class]]) {
if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) {
[self WXApiManagerDidRecvMiniProgram:(WXLaunchMiniProgramResp *)resp];
}else if ([resp isKindOfClass:[PayResp class]]) {
[self WXApiManagerDidRecvPay:(PayResp *)resp];
}
}
- (void)WXApiManagerDidRecvMiniProgram:(WXLaunchMiniProgramResp *)resp
{
WXLaunchMiniProgramResp *response = (WXLaunchMiniProgramResp *) resp;
NSData* jsonData = [resp.extMsg dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *extMsgDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
int status = [extMsgDict[@"status"] intValue];
if(status == 20){
[RNPayNativeBridge registerPayResult:true];
}else {
[RNPayNativeBridge registerPayResult:false];
}
switch (response.errCode) {
case WXSuccess:
[RNPayNativeBridge registerPayResult:true];
break;
default:
[RNPayNativeBridge registerPayResult:false];
break;
}
}
- (void)WXApiManagerDidRecvPay:(PayResp *)resp
{
PayResp *response = (PayResp *) resp;
......
......@@ -35,6 +35,7 @@ typedef void (^RNShareResponseCallback)(RNShareResponse *responseDO);
- (void)enableShareWithumengAppKey:(NSString *)umengAppKey snsNames:(NSArray *)snsNames;
- (void)shareHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;
- (void)shareImgWithBoardHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;
- (void)shareImgHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;
- (void)shareHandler:(id)data;
......
......@@ -98,7 +98,6 @@
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
//在回调里面获得点击的
if (platformType == UMSocialPlatformType_UserDefine_Begin+2) {
NSLog(@"do your operation for copy");
if (!_callback){
return;
}
......@@ -107,7 +106,7 @@
response.message = @"createPoster";
_callback(response);
}
else{
else {
NSString *resultTitle =shareParam.useContentTitle && (platformType == UMSocialPlatformType_WechatTimeLine) ? shareParam.content :shareParam.title ;
UMShareWebpageObject *msg = [UMShareWebpageObject shareObjectWithTitle:resultTitle
......@@ -123,6 +122,64 @@
}];
}
- (void) shareImgWithBoardHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;{
if (callback){
_callback = [callback copy];
}
RNShareParam *shareParam = [self formatParams:data];
[self setShareParams:shareParam];
if([_snsNames count] > 0){
[UMSocialUIManager setPreDefinePlatforms:_snsNames];
}
[UMSocialUIManager setPreDefinePlatforms:_snsNames];
[UMSocialShareUIConfig shareInstance].shareTitleViewConfig.shareTitleViewTitleString = @"分享到";
[UMSocialShareUIConfig shareInstance].shareTitleViewConfig.shareTitleViewTitleColor = UIColor.blackColor;
[UMSocialShareUIConfig shareInstance].shareTitleViewConfig.shareTitleViewBackgroundColor = UIColor.whiteColor;
[UMSocialShareUIConfig shareInstance].shareContainerConfig.isShareContainerHaveGradient = NO;
[UMSocialShareUIConfig shareInstance].shareCancelControlConfig.shareCancelControlText = @"取消";
[UMSocialShareUIConfig shareInstance].shareCancelControlConfig.shareCancelControlTextColor = UIColor.blackColor;
[UMSocialShareUIConfig shareInstance].shareCancelControlConfig.shareCancelControlBackgroundColor = UIColor.whiteColor;
[UMSocialShareUIConfig shareInstance].sharePageControlConfig.isShow = false;
[UMSocialShareUIConfig shareInstance].sharePageScrollViewConfig.shareScrollViewPageBGColor = UIColor.whiteColor;
[UMSocialShareUIConfig shareInstance].sharePageScrollViewConfig.shareScrollViewBackgroundColor = UIColor.whiteColor;
__weak typeof(self) weakSelf = self;
// 加入生成海报的操作
// @see http://dev.umeng.com/social/ios/进阶文档#6
if (shareParam.showPoster) {
[UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+2
withPlatformIcon:[UIImage imageNamed:@"poster_icon"]
withPlatformName:@"生成海报"];
}
[UMSocialShareUIConfig shareInstance].sharePageGroupViewConfig.sharePageGroupViewPostionType = UMSocialSharePageGroupViewPositionType_Bottom;
[UMSocialShareUIConfig shareInstance].sharePageScrollViewConfig.shareScrollViewPageItemStyleType = UMSocialPlatformItemViewBackgroudType_None;
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
//在回调里面获得点击的
//创建分享消息对象
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
//创建图片内容对象
UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];
NSString *imgBase64 = [data objectForKey:@"imgBase64"];
NSString *imgUrl = [data objectForKey:@"imgUrl"];
if (imgBase64) {
NSData *imageData = [[NSData alloc] initWithBase64EncodedString:imgBase64 options:NSDataBase64DecodingIgnoreUnknownCharacters];
UIImage *image = [UIImage imageWithData:imageData];
UIImage *png = UIImagePNGRepresentation(image);
[shareObject setShareImage:png];
} else {
[shareObject setShareImage:imgUrl];
}
//分享消息对象设置分享内容对象
messageObject.shareObject = shareObject;
//调用分享接口
[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:[RNShareConfig getRootViewController] completion:^(id result, NSError *error) {
[weakSelf shareCallback:result error:error];
}];
}];
}
- (void) shareImgHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;{
if (callback){
_callback = [callback copy];
......
......@@ -18,5 +18,5 @@
"start": "react-native start",
"test": "jest"
},
"version": "1.3.5"
"version": "1.3.7"
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment