Android SDK #
public class UPushClient {
/**
* 配置
* @param appId 项目唯一标示
* @param appKey 应用唯一标示
* @param smallIcon 通知栏小图标, 必须,例如: R.mipmap.ic_launcher
*/
public static void configUPush(Context context, String appId, String appKey, int smallIcon);
/**
* 注册推送
* @param context
* @param addr master地址
* @param port master端口
*/
public static void registerUPush(Context context, String addr, int port);
/**
* 注册到指定连接服务
* @param context
* @param addr connector地址
* @param port connector端口
*/
public static void registerSpecifiedUPushServer(Context context, String addr, int port);
/**
* 注册厂商推送
* @param context
* @param pushTypeName 可选,如果不指定厂商名,内部会自动识别。参照: 厂商类型
*/
public static void registerVendorPush(Context context, String pushTypeName);
public static void registerVendorPush(Context context)
/**
* 注册本地通知显示前处理,在后台服务进程中被调用
* @param preHandler
*/
public static void registerLocalNotificationPreHandle(Context c, Class<? extends UPushLocalNotificationPreHandle> preHandler);
/**
* 注册在后台服务中的消息处理,也可理解为在后台服务接收到消息的拦截处理,它在后台服务进程中被调用。
* 注意UPushMessageReceiver是在主进程(前台进程)被调用,当前台进程被销毁时,后台服务进程可能存在,所以需要在后台服务进程处理数据时使用。
* @param handler
*/
public static void registerBackgroundMessageHandle(Context c, Class<? extends UPushBackgroundMessageHandle> handler);
/**
* 注销
* @param context
*/
public static void unregisterUPush(Context context);
/**
* 绑定用户
* @param userId 用户唯一标示
*/
public static void bindUser(Context context, String userId);
/**
* 绑定厂商推送token。如果使用UPush实现的各平台推送aar,无需调用此方法,
* 如果开发者自行实现各厂商推送,需要调用此方法绑定厂商推送令牌
* @param tpType 厂商类型
* @param tpToken 厂商token
*/
public static void bindVendorPushToken(Context context, int tpType, String tpToken);
/**
* 检查连接,如果没有连接则立即建立连接,用于从后台返回前台时拉起推送服务
* @param context
*/
public static void checkConnection(Context context);
/**
* 取得状态
*/
public static int getStatus(Context context);
/**
* 取得已经绑定的用户ID
*/
public static String getUserId(Context c);
/**
* 取得PushToken
* @param c
* @return
*/
public static String getPushToken(Context c);
}
消息 #
- 高亮属性不为空,其他属性可能是为空
public class UMessage implements Parcelable {
/**
* 消息唯一标示
*/
private String msgId;
/**
* 消息体
*/
private String payload;
/**
* 消息类型
*/
private Integer type;
/**
* 通知类型
*/
private Integer notifyType;
/**
* 消息来源标示/发送者ID
*/
private String fromId;
/**
* 消息目标Id/接收者Id,默认/为空表示是自己,群消息时为群组ID
*/
private String toId;
/**
* 额外/扩展字段,JSON字符串
*/
private String extra;
/**
* 通知栏
*/
private UMessageNotification notification;
/**
* 消息画像
*/
private UMessagePortrait portrait;
}
notifyType 说明
消息画像 #
public class UMessagePortrait implements Parcelable {
/**
* fromId显示名
*/
private String name;
/**
* fromId头像
*/
private String avatar;
/**
* 群组名
*/
private String groupName;
/**
* 群组头像
*/
private String groupAvatar;
/**
* 通知类型
* 由服务端api setGroupNotifyTypeForUser, setNotifyTypeForFromId设置的通知类型
* UMessage中的通知类型是计算后最终的消息通知类型
*/
private Integer notifyType;
}
通知栏 #
public class UMessageNotification implements Parcelable {
/**
* 标题
*/
private String title;
/**
* 子标题
*/
private String subTitle;
/**
* 通知栏显示内容
*/
private String body;
/**
* 角标数
*/
private Integer badge;
/**
* 通知音
*/
private String sound;
/**
* 自定义通知栏点击动作
*/
private String action;
/**
* 通知channel标示,建议通过channelId去控制通知的行为,声音震动等
*/
private String channelId;
/**
* 大图标/消息头像/消息画像
*/
private String largeIcon;
}
事件监听 #
public abstract class UPushMessageReceiver extends BroadcastReceiver implements UPushIntentHandle {
public Context getContext();
/**
* 接收消息
* @param msg 消息
* @param pushTime 推送时间
* @param isOfflineMsg 是否为离线消息
*/
public abstract void onPush(UMessage msg, long pushTime, boolean isOfflineMsg);
/**
* 通知点击回调
* @param msgId
* @param msg
* @param remoteNotification true远程通知,厂商通知,false本地通知
*/
void onNotificationClicked(String msgId, UMessage msg, boolean remoteNotification);
/**
* 消息撤回
* @param data JSON字符串,{msgId,fromId,alert} 其中msgId一定存在
* @param timestamp 撤回时间
* @param msg 被撤回的消息
*/
public abstract void onRevoke(String data, long timestamp, UMessage msg);
/**
* 状态监听
* @param status 参照共通 - 状态码
*/
public abstract void onStatus(int status);
/**
* pushToken监听
* @param code 0 成功,小于0失败,参照共通 - 错误码
* @param pushToken 推送设备唯一标示
* @param serverTime 服务端推送token时间
* @param userId 绑定到pushToken的用户ID,未绑定时为空
*/
public abstract void onPushToken(int code, String pushToken, long serverTime, String userId);
/**
* 账号在其他设备登录监听
* @param info JSON字符串, keys: ip, platform
*/
public abstract void onRegisteredOnAnotherDevice(String info);
/**
* 注销完成监听
*/
public abstract void onUnregister();
/**
* 绑定用户监听
* @param code 0成功,小于0失败,参照错误码
*/
public abstract void onBindUser(int code);
/**
* 绑定第三方推送状态
* @param code 0失败,1成功
* @param type 厂商推送类型, 参照{@link com.cmcim.upush.android.sdk.PushType}
* @param vendorToken 厂商推送令牌
*/
public abstract void onBindVendorPush(int code, int type, String vendorToken);
}
Channel #
SDK创建了两个通道upush_high_channel
和upush_low_channel
- upush_high_channel,默认铃声,震动,闪灯,NotificationManager.IMPORTANCE_HIGH
- upush_low_channel,静默,无任何提醒,NotificationManager.IMPORTANCE_LOW
高级 #
以下两个后台拦截相关的类,大多数情况无需使用,只有当有后台常驻权限时有用。
通知显示拦截处理 #
注意它在后台进程被调用,可以使用广播和主进程通信
public abstract class UPushLocalNotificationPreHandle {
public UPushLocalNotificationPreHandle(Context c) {}
public void onDestroy(Context c) {}
/**
* 通知将要显示,对通知进行拦截处理
* @param c
* @param builder
* @param message
* @return 为空或等0不显示通知,不为空时表示未读数并显示通知
*/
public abstract Integer onNotificationWillAppear(Context c, NotificationCompat.Builder builder,
final UMessage message);
}
后台消息拦截处理 #
在后台进程被调用,后台服务接收到消息(后台) -> UPushBackgroundMessageHandle::onPush(后台) -> UPushMessageReceiver::onPush(前台)
public abstract class UPushBackgroundMessageHandle {
public UPushBackgroundMessageHandle() {}
/**
* 参照UPushIntentHandle中onPush
* @param c
* @param msg
* @param pushTime
* @param isOfflineMsg
* @return 是否向下转发,当返回false时UPushMessageReceiver不会收到onPush
*/
public abstract boolean onPush(Context c, UMessage msg, long pushTime, boolean isOfflineMsg);
/**
* 参照UPushIntentHandle中onRevoke
* @param c
* @param data
* @param timestamp
* @param message
* @return 是否向下转发,当返回false时UPushMessageReceiver不会收到onRevoke
*/
public abstract boolean onRevoke(Context c, String data, long timestamp, UMessage message);
}