一、基本使用说明文档:
1.首先进行接口初始化
JPushInterface.init(
getApplicationContext()
);
// 初始化 JPush
{
停止和恢复:
停止:
接口定义:
public
static
void
stopPush(Context context);
使用:JPushInterface.
stopPush
(getApplicationContext());
调用了本 API 后,JPush 推送服务完全被停止。具体表现为:
- JPush Service 不在后台运行
- 收不到推送消息
- 不能通过 JPushInterface.init 恢复,需要调用resumePush恢复。
- 极光推送所有的其他 API 调用都无效
恢复:
接口定义:
public
static
void
resumePush(Context context);
使用:JPushInterface.resumePush(getApplicationContext());
恢复推送服务。
调用了此 API 后,极光推送完全恢复正常工作。
}
2.注册接收广播
registerMessageReceiver();
// used for receive msg
public
void
registerMessageReceiver() {
mMessageReceiver
=
new
MessageReceiver();
IntentFilter filter =
new
IntentFilter();
filter.setPriority(IntentFilter.
SYSTEM_HIGH_PRIORITY
);
filter.addAction(
MESSAGE_RECEIVED_ACTION
);
registerReceiver(
mMessageReceiver
, filter);
}
public
class
MessageReceiver
extends
BroadcastReceiver {
@Override
public
void
onReceive(Context context, Intent intent) {
if
(
MESSAGE_RECEIVED_ACTION
.equals(intent.getAction())) {
String messge = intent.getStringExtra(
KEY_MESSAGE
);
String extras = intent.getStringExtra(
KEY_EXTRAS
);
StringBuilder showMsg =
new
StringBuilder();
showMsg.append(
KEY_MESSAGE
+
" : "
+ messge +
"\n"
);
if
(!ExampleUtil. isEmpty(extras)) {
showMsg.append(
KEY_EXTRAS
+
" : "
+ extras +
"\n"
);
}
setCostomMsg(showMsg.toString());
}
}
}
3. 添加Sdk相关权限和功能
<!-- 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
=
"com.jpush.example.app"
/>
</
intent-filter
>
</
activity
>
<!-- Required SDK核心功能-->
<
service
android:name
=
"cn.jpush.android.service.DownloadService"
android:enabled
=
"true"
android:exported
=
"false"
>
</
service
>
<!-- Required SDK 核心功能-->
<
service
android:name
=
"cn.jpush.android.service.PushService"
android:enabled
=
"true"
android:exported
=
"false"
>
<
intent-filter
>
<
action
android:name
=
"cn.jpush.android.intent.REGISTER"
/>
<
action
android:name
=
"cn.jpush.android.intent.REPORT"
/>
<
action
android:name
=
"cn.jpush.android.intent.PushService"
/>
<
action
android:name
=
"cn.jpush.android.intent.PUSH_TIME"
/>
</
intent-filter
>
</
service
>
<!-- Required SDK核心功能-->
<
receiver
android:name
=
"cn.jpush.android.service.PushReceiver"
android:enabled
=
"true"
>
<
intent-filter
android:priority
=
"1000"
>
<
action
android:name
=
"cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"
/>
<!--Required 显示通知栏 -->
<
category
android:name
=
"com.jpush.example.app"
/>
</
intent-filter
>
<
intent-filter
>
<
action
android:name
=
"android.intent.action.USER_PRESENT"
/>
<
action
android:name
=
"android.net.conn.CONNECTIVITY_CHANGE"
/>
</
intent-filter
>
<!-- Optional -->
<
intent-filter
>
<
action
android:name
=
"android.intent.action.PACKAGE_ADDED"
/>
<
action
android:name
=
"android.intent.action.PACKAGE_REMOVED"
/>
<
data
android:scheme
=
"package"
/>
</
intent-filter
>
</
receiver
>
<!-- Required SDK核心功能-->
<
receiver
android:name
=
"cn.jpush.android.service.AlarmReceiver"
/>
4.添加网络等相关权限
<!-- Required 一些系统要求的权限,如访问网络等-->
<
uses-permission
android:name
=
"com.jpush.example.app.permission.JPUSH_MESSAGE"
/>
<
uses-permission
android:name
=
"android.permission.RECEIVE_USER_PRESENT"
/>
<
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.WRITE_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.ACCESS_NETWORK_STATE"
/>
<
uses-permission
android:name
=
"android.permission.SYSTEM_ALERT_WINDOW"
/>
二、添加自定义消息
极光推送包含有通知与自定义消息两种类型的推送。
主要区别:
通知:主要用于提示用户的目的。应用加上通知功能,有利于提高应用的活跃度。
自定义消息 :自定义消息不是通知,所以不会被SDK展示到通知栏上。其内容完全由开发者自己定义。自定义消息用于应用的内部业务逻辑,完全与通知栏展示无关。自定义消息用于应用的内部业务逻辑。一条自定义消息推送过来,有可能没有任何界面显示。
相关资料可以参考:
主要使用:
1.自定义广播类:
/**
* 自定义接收器
*
* 如果不定义这个 Receiver,则:
* 1) 默认用户会打开主界面
* 2) 接收不到自定义消息
*/
public
class
MyReceiver
extends
BroadcastReceiver {
}
2.注册广播:
<!-- User defined. For test only 用户自定义的广播接收器-->
<
receiver
android:name
=
"com.example.jpushdemo.MyReceiver"
android:enabled
=
"true"
>
<
intent-filter
>
<
action
android:name
=
"cn.jpush.android.intent.REGISTRATION"
/>
<!--Required 用户注册SDK的intent-->
<
action
android:name
=
"cn.jpush.android.intent.UNREGISTRATION"
/>
<
action
android:name
=
"cn.jpush.android.intent.MESSAGE_RECEIVED"
/>
<!--Required 用户接收SDK消息的intent-->
<
action
android:name
=
"cn.jpush.android.intent.NOTIFICATION_RECEIVED"
/>
<!--Required 用户接收SDK通知栏信息的intent-->
<
action
android:name
=
"cn.jpush.android.intent.NOTIFICATION_OPENED"
/>
<!--Required 用户打开自定义通知栏的intent-->
<
action
android:name
=
"cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK"
/>
<!--Optional 用户接受Rich Push Javascript 回调函数的intent-->
<
action
android:name
=
"cn.jpush.android.intent.CONNECTION"
/>
<!-- 接收网络变化 连接/断开 since 1.6.3 -->
<
category
android:name
=
"com.jpush.example.app"
/>
</
intent-filter
>
</
receiver
>
三、相关设置
1. 设置Tag,Alias
Alias(别名
):为安装了应用程序的用户,取个别名来标识。以后给该用户 Push 消息时,就可以用此别名来指定。每个用户只能指定一个别名。
Tag (标签
):为安装了应用程序的用户,打上标签。其目的主要是方便开发者根据标签,来批量下发 Push 消息。可为每个用户打多个标签。
主要设置接口:
public
static
void
setAliasAndTags(Context context, String alias, Set<String> tags, TagAliasCallback callback)
2.定义通知栏样式:
主要接口:
public static void setDefaultPushNotificationBuilder(BasicPushNotificationBuilder builder)
public
static
void
setPushNotificationBuilder(Integer notificationBuilderId, BasicPushNotificationBuilder builder)
3.设置推送时间