Skip to content

Commit

Permalink
Merge pull request jpush#57 from jpush/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
KenChoi1992 authored Mar 2, 2018
2 parents 263f772 + 16802b4 commit 8bd0137
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 52 deletions.
2 changes: 1 addition & 1 deletion JShareRN.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Pod::Spec.new do |s|

s.ios.deployment_target = '7.0'

s.source = { :git => "https://github.com/jpush/jshare-react-native", :tag => "#{s.version}" }
s.source = { :git => "https://github.com/jpush/jshare-react-native.git", :tag => "#{s.version}" }
s.source_files = 'ios/RCTJShareModule/*.{h,m}'
s.preserve_paths = "*.js"
s.frameworks = 'UIKit','CFNetwork','CoreFoundation','CoreTelephony','SystemConfiguration','CoreGraphics','Foundation','Security','CoreLocation','AssetsLibrary'
Expand Down
116 changes: 69 additions & 47 deletions android/src/main/java/cn/jiguang/share/reactnative/JShareModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,10 @@ public void share(final ReadableMap map, final Callback succeedCallback, final C
break;
case "image":
shareType = Platform.SHARE_IMAGE;
shareText = map.getString("text");
shareParams.setText(shareText);
if (map.hasKey("text")) {
shareText = map.getString("text");
shareParams.setText(shareText);
}
if (map.hasKey("imagePath")) {
shareParams.setImagePath(map.getString("imagePath"));
} else if (map.hasKey("imageUrl")) {
Expand Down Expand Up @@ -233,54 +235,74 @@ public void isSupportAuthorize(ReadableMap map, Callback callback) {

@ReactMethod
public void authorize(final ReadableMap map, final Callback succeedCallback, final Callback failedCallback) {
String name = getPlatformName(map);
JShareInterface.authorize(name, new AuthListener() {
@Override
public void onComplete(Platform platform, int action, BaseResponseInfo baseResponseInfo) {
Logger.i(JSHARE_NAME, "authorize completed" + platform + ", action: " + action + ", data: " + baseResponseInfo);
switch (action) {
case Platform.ACTION_AUTHORIZING:
if (baseResponseInfo instanceof AccessTokenInfo) {
String token = ((AccessTokenInfo) baseResponseInfo).getToken();
long expiration = ((AccessTokenInfo) baseResponseInfo).getExpiresIn();
String refreshToken = ((AccessTokenInfo) baseResponseInfo).getRefeshToken();
String openId = ((AccessTokenInfo) baseResponseInfo).getOpenid();
String originData = baseResponseInfo.getOriginData();
Logger.i(JSHARE_NAME, "授权成功:" + baseResponseInfo.toString());
WritableMap result = Arguments.createMap();
result.putInt(CODE, 0);
result.putString(STATE, SUCCESS);
result.putString("token", token);
result.putDouble("expiration", expiration);
result.putString("refreshToken", refreshToken);
result.putString("openId", openId);
result.putString("originData", originData);
succeedCallback.invoke(result);
}
break;
}
String name = "";
try {
switch (map.getString("platform")) {
case "wechat":
name = Wechat.Name;
break;
case "qq":
name = QQ.Name;
break;
case "weibo":
name = SinaWeibo.Name;
break;
default:
name = Facebook.Name;
}
JShareInterface.authorize(name, new AuthListener() {
@Override
public void onComplete(Platform platform, int action, BaseResponseInfo baseResponseInfo) {
Logger.i(JSHARE_NAME, "authorize completed" + platform + ", action: " + action + ", data: " + baseResponseInfo);
switch (action) {
case Platform.ACTION_AUTHORIZING:
if (baseResponseInfo instanceof AccessTokenInfo) {
String token = ((AccessTokenInfo) baseResponseInfo).getToken();
long expiration = ((AccessTokenInfo) baseResponseInfo).getExpiresIn();
String refreshToken = ((AccessTokenInfo) baseResponseInfo).getRefeshToken();
String openId = ((AccessTokenInfo) baseResponseInfo).getOpenid();
String originData = baseResponseInfo.getOriginData();
Logger.i(JSHARE_NAME, "授权成功:" + baseResponseInfo.toString());
WritableMap result = Arguments.createMap();
result.putInt(CODE, 0);
result.putString(STATE, SUCCESS);
result.putString("token", token);
result.putDouble("expiration", expiration);
result.putString("refreshToken", refreshToken);
result.putString("openId", openId);
result.putString("originData", originData);
succeedCallback.invoke(result);
}
break;
}
}

@Override
public void onError(Platform platform, int action, int errorCode, Throwable throwable) {
Logger.i(JSHARE_NAME, "authorize failed");
throwable.printStackTrace();
WritableMap result = Arguments.createMap();
result.putInt(CODE, errorCode);
result.putString(STATE, FAIL);
result.putString(DESCRIPTION, getErrorDescription(errorCode));
failedCallback.invoke(result);
}
@Override
public void onError(Platform platform, int action, int errorCode, Throwable throwable) {
Logger.i(JSHARE_NAME, "authorize failed");
throwable.printStackTrace();
WritableMap result = Arguments.createMap();
result.putInt(CODE, errorCode);
result.putString(STATE, FAIL);
result.putString(DESCRIPTION, getErrorDescription(errorCode));
failedCallback.invoke(result);
}

@Override
public void onCancel(Platform platform, int i) {
Logger.i(JSHARE_NAME, "authorize has been canceled");
WritableMap result = Arguments.createMap();
result.putInt(CODE, i);
result.putString(STATE, CANCEL);
succeedCallback.invoke(result);
}
});
@Override
public void onCancel(Platform platform, int i) {
Logger.i(JSHARE_NAME, "authorize has been canceled");
WritableMap result = Arguments.createMap();
result.putInt(CODE, i);
result.putString(STATE, CANCEL);
succeedCallback.invoke(result);
}
});
} catch (Exception e) {
e.printStackTrace();
WritableMap writableMap = Arguments.createMap();
writableMap.putString(DESCRIPTION, "Can't get platform name");
failedCallback.invoke(writableMap);
}
}


Expand Down
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ export default class JShare {
/**
* 授权接口
* @param {Object} param = {
* platform: String //可以是 'wechat_session' / 'qq' / 'qzone' / 'sina_weibo' / 'facebook'
* platform: String //可以是 'wechat' / 'qq' / 'weibo' / 'facebook'
* }
* @param {Function} success = {
* token: string,
Expand Down
25 changes: 24 additions & 1 deletion ios/RCTJShareModule/RCTJShareModule.m
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,29 @@ - (id)init {
return self;
}

- (JSHAREPlatform)getAuthorizePlatformFromDic:(NSDictionary *)param {
JSHAREPlatform platform = 0;
if (param[@"platform"]) {
if ([param[@"platform"] isEqualToString:@"wechat"]) {
platform = JSHAREPlatformWechatSession;
}

if ([param[@"platform"] isEqualToString:@"qq"]) {
platform = JSHAREPlatformQQ;
}

if ([param[@"platform"] isEqualToString:@"weibo"]) {
platform = JSHAREPlatformSinaWeibo;
}

if ([param[@"platform"] isEqualToString:@"facebook"]) {
platform = JSHAREPlatformFacebook;
}
}

return platform;
}

- (JSHAREPlatform)getPlatformFromDic:(NSDictionary *)param {
JSHAREPlatform platform = 0;

Expand Down Expand Up @@ -150,7 +173,7 @@ - (JSHAREPlatform)getPlatformFromDic:(NSDictionary *)param {
RCT_EXPORT_METHOD(authorize:(NSDictionary *)param
success:(RCTResponseSenderBlock) successCallBack
fail:(RCTResponseSenderBlock) failCallBack) {
JSHAREPlatform platform = [self getPlatformFromDic:param];
JSHAREPlatform platform = [self getAuthorizePlatformFromDic:param];

if (platform == 0) {
failCallBack(@[@{@"code": @(1), @"description": @"platform 参数错误"}]);
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "jshare-react-native",
"version": "1.1.9",
"description": "JShare SDK for react native",
"version": "1.2.0",
"description": "JShare SDK for react native application",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
Expand Down

0 comments on commit 8bd0137

Please sign in to comment.