Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
react-native-social
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wind.wang
react-native-social
Commits
5d4d2042
Commit
5d4d2042
authored
May 27, 2021
by
wind.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add shareImgWithBoard
parent
be74417b
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
195 additions
and
6 deletions
+195
-6
ReactShareModule.java
...id/src/main/java/com/rnsocial/share/ReactShareModule.java
+32
-0
Share.java
android/src/main/java/com/rnsocial/share/Share.java
+65
-0
index.js
index.js
+7
-0
RNSocialNativeBridgeManager.m
ios/clazz/RNSocialNativeBridgeManager.m
+7
-0
RNPayManager.m
ios/clazz/pay/RNPayManager.m
+23
-3
RNShareConfig.h
ios/clazz/share/RNShareConfig.h
+1
-0
RNShareConfig.m
ios/clazz/share/RNShareConfig.m
+59
-2
package.json
package.json
+1
-1
No files found.
android/src/main/java/com/rnsocial/share/ReactShareModule.java
View file @
5d4d2042
...
@@ -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
();
...
...
android/src/main/java/com/rnsocial/share/Share.java
View file @
5d4d2042
...
@@ -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")));
...
...
index.js
View file @
5d4d2042
...
@@ -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
)
{
...
...
ios/clazz/RNSocialNativeBridgeManager.m
View file @
5d4d2042
...
@@ -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
...
...
ios/clazz/pay/RNPayManager.m
View file @
5d4d2042
...
@@ -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
;
...
...
ios/clazz/share/RNShareConfig.h
View file @
5d4d2042
...
@@ -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
;
...
...
ios/clazz/share/RNShareConfig.m
View file @
5d4d2042
...
@@ -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
];
...
...
package.json
View file @
5d4d2042
...
@@ -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
"
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment