Skip to content
This repository was archived by the owner on Apr 11, 2023. It is now read-only.

Commit 74d1b99

Browse files
committed
Android端支持 setApplicationIconBadgeNumbergetApplicationIconBadgeNumber
1 parent c6f8624 commit 74d1b99

File tree

8 files changed

+41
-16
lines changed

8 files changed

+41
-16
lines changed

android/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ dependencies {
2828
compile fileTree(dir: 'libs', include: ['*.jar'])
2929
testCompile 'junit:junit:4.12'
3030
compile "com.facebook.react:react-native:+"
31+
compile "me.leolin:ShortcutBadger:1.1.17@aar"
3132
}

android/src/main/java/com/jeepeng/react/xgpush/PushModule.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import com.facebook.react.bridge.ActivityEventListener;
1212
import com.facebook.react.bridge.Arguments;
13+
import com.facebook.react.bridge.Callback;
1314
import com.facebook.react.bridge.LifecycleEventListener;
1415
import com.facebook.react.bridge.Promise;
1516
import com.facebook.react.bridge.ReactApplicationContext;
@@ -23,6 +24,8 @@
2324
import com.tencent.android.tpush.XGPushManager;
2425
import com.tencent.android.tpush.encrypt.Rijndael;
2526

27+
import me.leolin.shortcutbadger.ShortcutBadger;
28+
2629
/**
2730
* 信鸽推送
2831
* Created by Jeepeng on 16/8/3.
@@ -32,6 +35,7 @@ public class PushModule extends ReactContextBaseJavaModule implements ActivityEv
3235
public static final String MODULE_NAME = "XGPushManager";
3336

3437
private Context reactContext;
38+
private int badge = 0;
3539

3640
public PushModule(ReactApplicationContext reactContext) {
3741
super(reactContext);
@@ -274,6 +278,17 @@ public void getInitialNotification(Promise promise) {
274278
promise.resolve(params);
275279
}
276280

281+
@ReactMethod
282+
public void getApplicationIconBadgeNumber(Callback callback) {
283+
callback.invoke(this.badge);
284+
}
285+
286+
@ReactMethod
287+
public void setApplicationIconBadgeNumber(int number) {
288+
this.badge = number;
289+
ShortcutBadger.applyCount(this.reactContext, number);
290+
}
291+
277292
@Override
278293
public void onHostResume() {
279294
XGPushManager.onActivityStarted(getCurrentActivity());

android/src/main/java/com/jeepeng/react/xgpush/receiver/MessageReceiver.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
import com.tencent.android.tpush.XGPushShowedResult;
1212
import com.tencent.android.tpush.XGPushTextMessage;
1313

14+
import org.json.JSONException;
15+
import org.json.JSONObject;
16+
17+
import me.leolin.shortcutbadger.ShortcutBadger;
18+
1419
/**
1520
* 消息接收器
1621
* Created by Jeepeng on 16/8/4.
@@ -25,13 +30,11 @@ public class MessageReceiver extends XGPushBaseReceiver {
2530
*/
2631
@Override
2732
public void onRegisterResult(Context context, int errorCode, XGPushRegisterResult xgPushRegisterResult) {
28-
2933
if(errorCode == 0) {
3034
Intent intent = new Intent(Constants.ACTION_ON_REGISTERED);
3135
intent.putExtra("token", xgPushRegisterResult.getToken());
3236
context.sendBroadcast(intent);
3337
}
34-
3538
}
3639

3740
/**
@@ -77,7 +80,7 @@ public void onTextMessage(Context context, XGPushTextMessage xgPushTextMessage)
7780
Intent intent = new Intent(Constants.ACTION_ON_TEXT_MESSAGE);
7881
intent.putExtra("title", xgPushTextMessage.getTitle());
7982
intent.putExtra("content", xgPushTextMessage.getContent());
80-
intent.putExtra("customContent", xgPushTextMessage.getCustomContent());
83+
intent.putExtra("custom_content", xgPushTextMessage.getCustomContent());
8184
context.sendBroadcast(intent);
8285
}
8386

@@ -120,6 +123,16 @@ public void onNotifactionClickedResult(Context context, XGPushClickedResult noti
120123
*/
121124
@Override
122125
public void onNotifactionShowedResult(Context context, XGPushShowedResult xgPushShowedResult) {
126+
// set app icon badge
127+
try {
128+
JSONObject obj = new JSONObject(xgPushShowedResult.getCustomContent());
129+
int badge = obj.optInt("badge", -1);
130+
if (badge >= 0) {
131+
ShortcutBadger.applyCount(context, badge);
132+
}
133+
} catch (JSONException e) {
134+
e.printStackTrace();
135+
}
123136
Intent intent = new Intent(Constants.ACTION_ON_NOTIFICATION_SHOWED);
124137
Bundle bundle = new Bundle();
125138
bundle.putString("content", xgPushShowedResult.getContent());

example/android/app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ def enableSeparateBuildPerCPUArchitecture = false
8383
def enableProguardInReleaseBuilds = false
8484

8585
android {
86-
compileSdkVersion 23
87-
buildToolsVersion "23.0.1"
86+
compileSdkVersion 25
87+
buildToolsVersion '25.0.2'
8888

8989
defaultConfig {
9090
applicationId "com.jeepeng.push"
9191
minSdkVersion 16
92-
targetSdkVersion 22
92+
targetSdkVersion 25
9393
versionCode 1
9494
versionName "1.0"
9595
ndk {
@@ -128,7 +128,7 @@ android {
128128
dependencies {
129129
compile project(':react-native-xinge-push')
130130
compile fileTree(dir: "libs", include: ["*.jar"])
131-
compile "com.android.support:appcompat-v7:23.0.1"
131+
compile "com.android.support:appcompat-v7:25.3.1"
132132
compile "com.facebook.react:react-native:+" // From node_modules
133133
}
134134

example/android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ buildscript {
55
jcenter()
66
}
77
dependencies {
8-
classpath 'com.android.tools.build:gradle:2.2.3'
8+
classpath 'com.android.tools.build:gradle:2.3.3'
99

1010
// NOTE: Do not place your application dependencies here; they belong
1111
// in the individual module build.gradle files
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
#Tue Jun 13 10:05:14 CST 2017
12
distributionBase=GRADLE_USER_HOME
23
distributionPath=wrapper/dists
34
zipStoreBase=GRADLE_USER_HOME
45
zipStorePath=wrapper/dists
5-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

example/ios/example/AppDelegate.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
3333
self.window.rootViewController = rootViewController;
3434
[self.window makeKeyAndVisible];
3535
// 统计从推送打开的设备
36-
NSLog(@"%@",launchOptions);
3736
[XGPushManager handleLaunching:launchOptions successCallback:^{
3837
NSLog(@"[XGPush] Handle launching success");
3938
} errorCallback:^{

index.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,11 @@ class XGPush {
8989
}
9090

9191
static setApplicationIconBadgeNumber(number) {
92-
if (Platform.OS === 'ios') {
93-
XGPushManager.setApplicationIconBadgeNumber(number);
94-
}
92+
XGPushManager.setApplicationIconBadgeNumber(number);
9593
}
9694

9795
static getApplicationIconBadgeNumber(callback) {
98-
if (Platform.OS === 'ios') {
99-
XGPushManager.getApplicationIconBadgeNumber(callback);
100-
}
96+
XGPushManager.getApplicationIconBadgeNumber(callback);
10197
}
10298

10399
static checkPermissions(callback) {

0 commit comments

Comments
 (0)