功能介绍
在进行离线推送功能的集成前,请确保已按照官方文档完成 厂商配置,以确保 Classroom 的离线推送功能正常运行。
Classroom 接入 TIMPush 推送插件的效果如下(以小米手机 Redmi Note 8 Pro 的显示效果为例):
应用在后台时或离线时 | 锁屏时 |
![]() | ![]() |
功能接入
1. 请参见推送插件 TIMPush 快速接入文档,完成除步骤6以外的所有步骤(Classroom 组件内部已经进行课前提醒的离线消息推送,所以步骤6不需要单独配置)。
2. (可选) 若您想实现点击通知立即上课,可参考以下代码,注册回调时机建议放在应用 Application 的 onCreate() 函数中:
TUICore.registerEvent(TUIConstants.TIMPush.EVENT_NOTIFY, TUIConstants.TIMPush.EVENT_NOTIFY_NOTIFICATION, new ITUINotification() {@Overridepublic void onNotifyEvent(String key, String subKey, Map<String, Object> param) {if (TUIConstants.TIMPush.EVENT_NOTIFY.equals(key) && TUIConstants.TIMPush.EVENT_NOTIFY_NOTIFICATION.equals(subKey)) {if (param != null) {String extString = (String) param.get(TUIConstants.TIMPush.NOTIFICATION_EXT_KEY);try {// 可根据您的业务,点击通知跳转到相应的界面,以下是跳转到课堂的示例。JSONObject roomObject = new JSONObject(extString);String roomId = roomObject.getString("RoomId");if (!TextUtils.isEmpty(roomId)) {loginAndEnterRoom(roomId);}} catch (Exception e) {}}}}});private void loginAndEnterRoom(String roomId) {int sdkAppId = "您的appId";String userId = "您的UserId"String userSig = GenerateTestUserSig.genTestUserSig(userId);// 登录TUILogin.login(this.getApplicationContext(), sdkAppId, userId, userSig, new TUICallback() {@Overridepublic void onSuccess() {// 登录成功后进入课堂ConferenceDefine.JoinConferenceParams params = new ConferenceDefine.JoinConferenceParams(roomId);Intent intent = new Intent(getApplicationContext(), ConferenceMainActivity.class);intent.putExtra(KEY_JOIN_CONFERENCE_PARAMS, params);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);getApplicationContext().startActivity(intent);}@Overridepublic void onError(int errorCode, String errorMessage) {}});}
注意:
若您想实现点击推送进入课堂,必须上课前完成登录。
常见问题
1. 若在集成过程中遇到问题,请务必先查阅 插件推送-常见问题 进行自助排查。
2. 条件说明:部分厂商要求必须上架应用市场才可以正常使用推送服务,详情参见下表:
厂商通道 | 是否需要上架 | 账号说明 |
小米 | 是 | 需要注册企业开发者账号 |
VIVO | 是 | 需要注册企业开发者账号 |
OPPO | 否 | 需要注册企业开发者账号 |
荣耀 | 否 | 需要注册企业开发者账号 |
华为 | 否 | 个人开发者账号即可 |
魅族 | 否 | 个人开发者账号即可 |
功能定制
如果您想自定义课前提醒时间,您可以通过修改源码来实现。可通过修改 ScheduleConferenceView.java 中
REMINDER_TIME
成员变量的值,设置课前提醒的时间(秒)。注意:
若课前提醒的时间大于课堂预定的时间,则不会推送课前提醒的通知。
关键代码
课前提醒时间的设置,请参见:
public abstract void scheduleConference(ConferenceInfo conferenceInfo, TUIRoomDefine.ActionCallback callback);
TUIConferenceListManager manager = (TUIConferenceListManager) TUIRoomEngine.sharedInstance().getExtension(CONFERENCE_LIST_MANAGER);TUIConferenceListManager.ConferenceInfo conferenceInfo = new TUIConferenceListManager.ConferenceInfo();conferenceInfo.basicRoomInfo.roomId = "您的roomId";conferenceInfo.reminderSecondsBeforeStart = 600; // 请替换600为您的课前提醒时间manager.scheduleConference(conferenceInfo, new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 预定课堂成功回调}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 预定课堂失败回调}});