mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2026-04-01 00:00:20 +08:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a8a926c50 | ||
|
|
0903b58270 | ||
|
|
f0dc403ca8 | ||
|
|
5c53749171 | ||
|
|
68bb0ebfdf | ||
|
|
fa0ca5f335 | ||
|
|
a4c17d3882 | ||
|
|
1d420b5bb6 | ||
|
|
d69f50915c | ||
|
|
e26d8448a0 |
29
README.md
29
README.md
@@ -13,10 +13,10 @@
|
|||||||
|
|
||||||
>注意:插件从 v3.4.0 开始支持 cordova-android 7.0.0,因 cordova-android 7.0.0 修改了 Android 项目结构,因此不兼容之前的版本,升级前请务必注意。
|
>注意:插件从 v3.4.0 开始支持 cordova-android 7.0.0,因 cordova-android 7.0.0 修改了 Android 项目结构,因此不兼容之前的版本,升级前请务必注意。
|
||||||
>
|
>
|
||||||
>如果需要安装之前版本的插件,请先安装 v1.2.0 以下版本(建议安装 v1.1.12)的 [cordova-plugin-jcore](https://github.com/jpush/cordova-plugin-jcore),再安装旧版本插件(比如 v3.3.2),否则运行会报错。
|
|
||||||
>
|
|
||||||
>如果需要在cordova-android 7.0.0之前版本集成最新插件,参照[这篇文章](https://www.jianshu.com/p/23b117ca27a6)
|
>如果需要在cordova-android 7.0.0之前版本集成最新插件,参照[这篇文章](https://www.jianshu.com/p/23b117ca27a6)
|
||||||
>
|
>
|
||||||
|
>如果需要安装之前版本的插件,请先安装 v1.2.0 以下版本(建议安装 v1.1.12)的 [cordova-plugin-jcore](https://github.com/jpush/cordova-plugin-jcore),再安装旧版本插件(比如 v3.3.2),否则运行会报错。
|
||||||
|
>
|
||||||
>[Cordova Android版本与原生版本对应表](http://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#requirements-and-support)
|
>[Cordova Android版本与原生版本对应表](http://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#requirements-and-support)
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
@@ -41,6 +41,27 @@
|
|||||||
```shell
|
```shell
|
||||||
cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
|
cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 参数
|
||||||
|
|
||||||
|
- APP_KEY: 必须设置,JPush 上注册的包名对应的 Appkey
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--variable APP_KEY=your_jpush_appkey
|
||||||
|
```
|
||||||
|
|
||||||
|
- CHANNEL: 可以不设置,v3.6.0+ 版本开始支持(Android Only),方便开发者统计 APK 分发渠道,默认为 developer-default.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--variable CHANNEL=your_channel
|
||||||
|
```
|
||||||
|
|
||||||
|
- 同时动态配置 APP_KEY 和 CHANNEL 示例
|
||||||
|
|
||||||
|
```shell
|
||||||
|
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey --variable CHANNEL=your_channel
|
||||||
|
```
|
||||||
|
|
||||||
### Ionic
|
### Ionic
|
||||||
|
|
||||||
@@ -123,6 +144,10 @@ Android 的推送通过长连接的方式实现,只有在保持连接的情况
|
|||||||
|
|
||||||
### iOS
|
### iOS
|
||||||
|
|
||||||
|
#### XCode 10 收不到推送怎么办?
|
||||||
|
|
||||||
|
打开 xcode -> file -> WorkSpace Settings… -> Build System 改成 Legacy Build System 然后卸载 App 重新运行。
|
||||||
|
|
||||||
#### 打包时遇到 i386 打包失败怎么办?
|
#### 打包时遇到 i386 打包失败怎么办?
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jpush-phonegap-plugin",
|
"name": "jpush-phonegap-plugin",
|
||||||
"version": "3.4.7",
|
"version": "3.6.0",
|
||||||
"description": "JPush for cordova plugin",
|
"description": "JPush for cordova plugin",
|
||||||
"cordova": {
|
"cordova": {
|
||||||
"id": "jpush-phonegap-plugin",
|
"id": "jpush-phonegap-plugin",
|
||||||
|
|||||||
129
plugin.xml
129
plugin.xml
@@ -2,7 +2,7 @@
|
|||||||
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
id="jpush-phonegap-plugin"
|
id="jpush-phonegap-plugin"
|
||||||
version="3.4.7">
|
version="3.6.0">
|
||||||
|
|
||||||
<name>JPush</name>
|
<name>JPush</name>
|
||||||
<description>JPush for cordova plugin</description>
|
<description>JPush for cordova plugin</description>
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
<license>MIT License</license>
|
<license>MIT License</license>
|
||||||
|
|
||||||
<preference name="APP_KEY" />
|
<preference name="APP_KEY" />
|
||||||
|
<preference name="CHANNEL" default="developer-default" />
|
||||||
|
|
||||||
<engines>
|
<engines>
|
||||||
<engine name="cordova" version=">=3.0" />
|
<engine name="cordova" version=">=3.0" />
|
||||||
@@ -85,40 +86,20 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
|
||||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<config-file target="AndroidManifest.xml" parent="/manifest/application" mode="merge">
|
<config-file target="AndroidManifest.xml" parent="/manifest/application" mode="merge">
|
||||||
<!-- Required SDK核心功能 -->
|
|
||||||
<activity android:name="cn.jpush.android.ui.PushActivity"
|
|
||||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
|
||||||
android:configChanges="orientation|keyboardHidden">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="cn.jpush.android.ui.PushActivity" />
|
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
|
||||||
<category android:name="$PACKAGE_NAME" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
|
|
||||||
<!-- Rich push 核心功能 since 2.0.6 -->
|
|
||||||
<activity android:name="cn.jpush.android.ui.PopWinActivity"
|
|
||||||
android:theme="@style/MyDialogStyle"
|
|
||||||
android:exported="false">
|
|
||||||
</activity>
|
|
||||||
|
|
||||||
<!-- Required SDK 核心功能 -->
|
|
||||||
<service android:name="cn.jpush.android.service.DownloadService"
|
|
||||||
android:enabled="true"
|
|
||||||
android:exported="false">
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<!-- Required SDK 核心功能-->
|
<!-- Required SDK 核心功能-->
|
||||||
<service android:name="cn.jpush.android.service.PushService"
|
<service android:name="cn.jpush.android.service.PushService"
|
||||||
@@ -133,10 +114,33 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
|
<!-- since 3.0.9 Required SDK 核心功能-->
|
||||||
|
<provider
|
||||||
|
android:authorities="$PACKAGE_NAME.DataProvider"
|
||||||
|
android:name="cn.jpush.android.service.DataProvider"
|
||||||
|
android:exported="true" />
|
||||||
|
|
||||||
|
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的 JPush 服务相互拉起的功能。 -->
|
||||||
|
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
|
||||||
|
<service android:name="cn.jpush.android.service.DaemonService"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="cn.jpush.android.intent.DaemonService" />
|
||||||
|
<category android:name="$PACKAGE_NAME" />
|
||||||
|
</intent-filter>
|
||||||
|
</service>
|
||||||
|
|
||||||
|
<!-- since 3.1.0 Required SDK 核心功能-->
|
||||||
|
<provider
|
||||||
|
android:authorities="$PACKAGE_NAME.DownloadProvider"
|
||||||
|
android:name="cn.jpush.android.service.DownloadProvider"
|
||||||
|
android:exported="true"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- Required SDK核心功能-->
|
<!-- Required SDK核心功能-->
|
||||||
<receiver android:name="cn.jpush.android.service.PushReceiver"
|
<receiver android:name="cn.jpush.android.service.PushReceiver"
|
||||||
android:enabled="true"
|
android:enabled="true">
|
||||||
android:exported="false">
|
|
||||||
<intent-filter android:priority="1000">
|
<intent-filter android:priority="1000">
|
||||||
<!--Required 显示通知栏 -->
|
<!--Required 显示通知栏 -->
|
||||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||||
@@ -154,18 +158,46 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的 JPush 服务相互拉起的功能。 -->
|
<!-- Required SDK核心功能 -->
|
||||||
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
|
<activity android:name="cn.jpush.android.ui.PushActivity"
|
||||||
<service android:name="cn.jpush.android.service.DaemonService"
|
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||||
android:enabled="true"
|
android:configChanges="orientation|keyboardHidden"
|
||||||
android:exported="true">
|
android:exported="false" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="cn.jpush.android.intent.DaemonService" />
|
<action android:name="cn.jpush.android.ui.PushActivity" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="$PACKAGE_NAME" />
|
<category android:name="$PACKAGE_NAME" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service>
|
</activity>
|
||||||
|
|
||||||
<!-- 通知广播接收器 -->
|
<!-- SDK 核心功能-->
|
||||||
|
<activity
|
||||||
|
android:name="cn.jpush.android.ui.PopWinActivity"
|
||||||
|
android:configChanges="orientation|keyboardHidden"
|
||||||
|
android:exported="false"
|
||||||
|
android:theme="@style/MyDialogStyle">
|
||||||
|
<intent-filter>
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="$PACKAGE_NAME" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
|
||||||
|
<!-- Required SDK 核心功能 -->
|
||||||
|
<service android:name="cn.jpush.android.service.DownloadService"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="false">
|
||||||
|
</service>
|
||||||
|
<!-- Required SDK核心功能-->
|
||||||
|
<receiver android:name="cn.jpush.android.service.AlarmReceiver" />
|
||||||
|
|
||||||
|
<receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
||||||
|
<category android:name="$PACKAGE_NAME" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
|
||||||
|
<!-- 插件通知广播接收器 -->
|
||||||
<receiver
|
<receiver
|
||||||
android:name="cn.jiguang.cordova.push.JPushReceiver"
|
android:name="cn.jiguang.cordova.push.JPushReceiver"
|
||||||
android:enabled="true">
|
android:enabled="true">
|
||||||
@@ -179,34 +211,17 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
<!-- Required SDK核心功能-->
|
|
||||||
<receiver
|
|
||||||
android:name="cn.jpush.android.service.AlarmReceiver"
|
|
||||||
android:exported="false" />
|
|
||||||
|
|
||||||
<!-- since 3.0.9 Required SDK 核心功能-->
|
|
||||||
<provider
|
|
||||||
android:authorities="$PACKAGE_NAME.DataProvider"
|
|
||||||
android:name="cn.jpush.android.service.DataProvider"
|
|
||||||
android:exported="true" />
|
|
||||||
|
|
||||||
<receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
|
||||||
<category android:name="$PACKAGE_NAME" />
|
|
||||||
</intent-filter>
|
|
||||||
</receiver>
|
|
||||||
|
|
||||||
<!-- Required. Enable it you can get statistics data with channel -->
|
<!-- Required. Enable it you can get statistics data with channel -->
|
||||||
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" />
|
<meta-data android:name="JPUSH_CHANNEL" android:value="$CHANNEL" />
|
||||||
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" />
|
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" />
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<lib-file src="src/android/libs/jpush-android-3.1.6.jar" />
|
<lib-file src="src/android/libs/jpush-android-3.1.8.jar" />
|
||||||
|
|
||||||
<source-file src="src/android/JPushReceiver.java" target-dir="app/src/main/java/cn/jiguang/cordova/push" />
|
<source-file src="src/android/JPushReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||||
<source-file src="src/android/JPushPlugin.java" target-dir="app/src/main/java/cn/jiguang/cordova/push" />
|
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||||
<source-file src="src/android/JPushEventReceiver.java" target-dir="app/src/main/java/cn/jiguang/cordova/push" />
|
<source-file src="src/android/JPushEventReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||||
|
|
||||||
<resource-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml"
|
<resource-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml"
|
||||||
target="res/drawable/jpush_richpush_btn_selector.xml" />
|
target="res/drawable/jpush_richpush_btn_selector.xml" />
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package cn.jiguang.cordova.push;
|
package cn.jiguang.cordova.push;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AppOpsManager;
|
import android.app.AppOpsManager;
|
||||||
|
import android.app.NotificationManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@@ -20,22 +20,17 @@ import org.json.JSONObject;
|
|||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
|
|
||||||
import cn.jpush.android.api.BasicPushNotificationBuilder;
|
import cn.jpush.android.api.BasicPushNotificationBuilder;
|
||||||
import cn.jpush.android.api.JPushInterface;
|
import cn.jpush.android.api.JPushInterface;
|
||||||
import cn.jpush.android.api.TagAliasCallback;
|
import cn.jpush.android.api.TagAliasCallback;
|
||||||
import cn.jpush.android.data.JPushLocalNotification;
|
import cn.jpush.android.data.JPushLocalNotification;
|
||||||
import cn.jpush.android.service.JPushMessageReceiver;
|
|
||||||
|
|
||||||
public class JPushPlugin extends CordovaPlugin {
|
public class JPushPlugin extends CordovaPlugin {
|
||||||
|
|
||||||
@@ -673,35 +668,42 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
|
||||||
private boolean hasPermission(String appOpsServiceId) {
|
private boolean hasPermission(String appOpsServiceId) {
|
||||||
|
|
||||||
Context context = cordova.getActivity().getApplicationContext();
|
Context context = cordova.getActivity().getApplicationContext();
|
||||||
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
if (Build.VERSION.SDK_INT >= 24) {
|
||||||
ApplicationInfo appInfo = context.getApplicationInfo();
|
NotificationManager mNotificationManager = (NotificationManager) context
|
||||||
|
.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
|
return mNotificationManager.areNotificationsEnabled();
|
||||||
|
} else {
|
||||||
|
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
||||||
|
ApplicationInfo appInfo = context.getApplicationInfo();
|
||||||
|
|
||||||
String pkg = context.getPackageName();
|
String pkg = context.getPackageName();
|
||||||
int uid = appInfo.uid;
|
int uid = appInfo.uid;
|
||||||
Class appOpsClazz;
|
Class appOpsClazz;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
appOpsClazz = Class.forName(AppOpsManager.class.getName());
|
appOpsClazz = Class.forName(AppOpsManager.class.getName());
|
||||||
Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow", Integer.TYPE, Integer.TYPE,
|
Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow", Integer.TYPE, Integer.TYPE,
|
||||||
String.class);
|
String.class);
|
||||||
Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId);
|
Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId);
|
||||||
int value = opValue.getInt(Integer.class);
|
int value = opValue.getInt(Integer.class);
|
||||||
Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);
|
Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);
|
||||||
return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED;
|
return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED;
|
||||||
} catch (InvocationTargetException e) {
|
} catch (InvocationTargetException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (NoSuchMethodException e) {
|
} catch (NoSuchMethodException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (NoSuchFieldException e) {
|
} catch (NoSuchFieldException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
BIN
src/android/libs/jpush-android-3.1.8.jar
Executable file
BIN
src/android/libs/jpush-android-3.1.8.jar
Executable file
Binary file not shown.
0
src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml
Normal file → Executable file
0
src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml
Normal file → Executable file
0
src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml
Normal file → Executable file
0
src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml
Normal file → Executable file
0
src/android/res/layout/jpush_popwin_layout.xml
Normal file → Executable file
0
src/android/res/layout/jpush_popwin_layout.xml
Normal file → Executable file
0
src/android/res/layout/jpush_webview_layout.xml
Normal file → Executable file
0
src/android/res/layout/jpush_webview_layout.xml
Normal file → Executable file
0
src/android/res/values/jpush_style.xml
Normal file → Executable file
0
src/android/res/values/jpush_style.xml
Normal file → Executable file
Reference in New Issue
Block a user