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

add shareImgWithBoard

parent be74417b
...@@ -61,6 +61,38 @@ public class ReactShareModule extends ReactContextBaseJavaModule { ...@@ -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 @ReactMethod
public void shareImg(final ReadableMap params, final Callback callback){ public void shareImg(final ReadableMap params, final Callback callback){
final Activity activity = getCurrentActivity(); final Activity activity = getCurrentActivity();
......
...@@ -121,6 +121,71 @@ public class Share { ...@@ -121,6 +121,71 @@ public class Share {
}).open(boardConfig); }).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) { 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; 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"))); // UMImage image = new UMImage(mContext, new File(params.getString("imgPath")));
......
...@@ -79,6 +79,13 @@ class Social { ...@@ -79,6 +79,13 @@ class Social {
} }
}) })
} }
shareImgWithBoard(args, callback) {
ReactShare.shareImgWithBoard(args, (result) => {
if (callback) {
callback(result)
}
})
}
shareImg(args, callback) { shareImg(args, callback) {
ReactShare.shareImg(args, (result) => { ReactShare.shareImg(args, (result) => {
if (callback) { if (callback) {
......
...@@ -43,6 +43,13 @@ RCT_EXPORT_METHOD(shareImg:(NSDictionary*)params callback:(RCTResponseSenderBloc ...@@ -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 @end
......
...@@ -165,12 +165,32 @@ NSString *const PayAlipayURLScheme = @"alipay://"; ...@@ -165,12 +165,32 @@ NSString *const PayAlipayURLScheme = @"alipay://";
} }
- (void)onResp:(BaseReq *)resp { - (void)onResp:(BaseReq *)resp {
if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) {
if ([resp isKindOfClass:[PayResp class]]) { [self WXApiManagerDidRecvMiniProgram:(WXLaunchMiniProgramResp *)resp];
}else if ([resp isKindOfClass:[PayResp class]]) {
[self WXApiManagerDidRecvPay:(PayResp *)resp]; [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 - (void)WXApiManagerDidRecvPay:(PayResp *)resp
{ {
PayResp *response = (PayResp *) resp; PayResp *response = (PayResp *) resp;
......
...@@ -35,6 +35,7 @@ typedef void (^RNShareResponseCallback)(RNShareResponse *responseDO); ...@@ -35,6 +35,7 @@ typedef void (^RNShareResponseCallback)(RNShareResponse *responseDO);
- (void)enableShareWithumengAppKey:(NSString *)umengAppKey snsNames:(NSArray *)snsNames; - (void)enableShareWithumengAppKey:(NSString *)umengAppKey snsNames:(NSArray *)snsNames;
- (void)shareHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback; - (void)shareHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;
- (void)shareImgWithBoardHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;
- (void)shareImgHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback; - (void)shareImgHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;
- (void)shareHandler:(id)data; - (void)shareHandler:(id)data;
......
...@@ -98,7 +98,6 @@ ...@@ -98,7 +98,6 @@
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) { [UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
//在回调里面获得点击的 //在回调里面获得点击的
if (platformType == UMSocialPlatformType_UserDefine_Begin+2) { if (platformType == UMSocialPlatformType_UserDefine_Begin+2) {
NSLog(@"do your operation for copy");
if (!_callback){ if (!_callback){
return; return;
} }
...@@ -107,7 +106,7 @@ ...@@ -107,7 +106,7 @@
response.message = @"createPoster"; response.message = @"createPoster";
_callback(response); _callback(response);
} }
else{ else {
NSString *resultTitle =shareParam.useContentTitle && (platformType == UMSocialPlatformType_WechatTimeLine) ? shareParam.content :shareParam.title ; NSString *resultTitle =shareParam.useContentTitle && (platformType == UMSocialPlatformType_WechatTimeLine) ? shareParam.content :shareParam.title ;
UMShareWebpageObject *msg = [UMShareWebpageObject shareObjectWithTitle:resultTitle UMShareWebpageObject *msg = [UMShareWebpageObject shareObjectWithTitle:resultTitle
...@@ -123,6 +122,64 @@ ...@@ -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;{ - (void) shareImgHandler:(NSDictionary *)data callback:(RNShareResponseCallback)callback;{
if (callback){ if (callback){
_callback = [callback copy]; _callback = [callback copy];
......
...@@ -18,5 +18,5 @@ ...@@ -18,5 +18,5 @@
"start": "react-native start", "start": "react-native start",
"test": "jest" "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