using Lskj.Push.Common; using Lskj.Push.Common.Resp; using Lskj.Push.Device; using Lskj.Push.Push; using Lskj.Push.Push.Mode; using Lskj.Push.Report; using Lskj.Push.Util; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lskj.Push { /// /// Main Entrance - 该类为JPush服务的主要入口 /// public class JPushClient { private PushClient _pushClient; private ReportClient _reportClient; private DeviceClient _deviceClient; /// /// 带两个参数的构造函数,该状态下,ApnsProduction默认为false /// /// Portal上产生的app_key /// 你的API MasterSecret public JPushClient(String app_key, String masterSecret) { _pushClient = new PushClient(app_key, masterSecret); _reportClient = new ReportClient(app_key, masterSecret); _deviceClient = new DeviceClient(app_key, masterSecret); } // ----------------------------- Push API /// /// 想某个设备或者某设别列表推送一条通知,或者消息 /// /// 推送的数据结构,包含平台信息推送目标,通知内容,消息内容与可选参数 /// 成功时返回sendno和messageid,失败时有异常抛出 /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public MessageResult SendPush(PushPayload payload) { Preconditions.checkArgument(payload != null, "pushPayload should not be empty"); return _pushClient.sendPush(payload); } /// /// 想某个设备或者某设别列表推送一条通知,或者消息 /// /// 推送的json结构,包含平台信息推送目标,通知内容,消息内容与可选参数 /// 成功时返回sendno和messageid,失败时有异常抛出 /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public MessageResult SendPush(string payloadString) { Preconditions.checkArgument(!string.IsNullOrEmpty(payloadString), "payloadString should not be empty"); return _pushClient.sendPush(payloadString); } // ------------------------------- Report API /// /// Get received report. /// /// 100 msgids to batch getting is supported. /// Can be printed to JSON. /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public ReceivedResult getReceivedApi(String msg_ids) { return _reportClient.getReceiveds(msg_ids); } /// /// Get received report v3. /// /// 100 msgids to batch getting is supported. /// public ReceivedResult getReceivedApi_v3(String msg_ids) { return _reportClient.getReceiveds_v3(msg_ids); } /// /// 用户统计查询接口,这个接口是vip用户专用 /// /// 时间单位,有三个取值:HOUR、DAY、MONTH /// 起始时间 /// 持续时间 /// 包含ios android的用户情况 public UsersResult getReportUsers(TimeUnit timeUnit, String start, int duration) { return _reportClient.getUsers(timeUnit, start, duration); } /// /// 消息统计查询接口,这个接口是vip用户专用 /// /// 用逗号分隔的多个消息id /// 包含各个mssageid和ios android平台 public MessagesResult getReportMessages(params String[] msgIds) { return _reportClient.getReportMessages(msgIds); } // ------------------------------- Device API /// /// 获取当前设备的所有属性,包含tags,alias /// /// 设备的registrationID /// 找不到的统计项是null,否则为统计项的值 public TagAliasResult getDeviceTagAlias(String registrationId) { return _deviceClient.getDeviceTagAlias(registrationId); } /// /// 清理当前设备指定的属性,当前支持tags,alias /// /// 是否清除alias /// 是否清除tags /// 找不到的统计项是null,否则为统计项的值 /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public DefaultResult updateDeviceTagAlias(String registrationId, bool clearAlias, bool clearTag) { return _deviceClient.updateDeviceTagAlias(registrationId, clearAlias, clearTag); } /// /// 更新当前设备指定的属性,当前支持tags,alias /// /// alias名称,传递null:不改变,传递"":清空 /// 新添加的tags /// 删除的tags /// 更新成功时isResultOK==true /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public DefaultResult updateDeviceTagAlias(String registrationId, String alias, HashSet tagsToAdd, HashSet tagsToRemove) { return _deviceClient.updateDeviceTagAlias(registrationId, alias, tagsToAdd, tagsToRemove); } /// /// 获取当前应用的所有标签 /// /// 标签列表 /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public TagListResult getTagList() { return _deviceClient.getTagList(); } /// /// 查询某个设备是否在tag下 /// /// 查询的tag /// 需要确认的设备的registrationID /// 成功result=true,失败result=false /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public BooleanResult isDeviceInTag(String theTag, String registrationID) { return _deviceClient.isDeviceInTag(theTag, registrationID); } /// /// 为一个标签添加或者删除设备 /// /// 操作的tag /// 需要添加的registrationID的集合 /// 需要删除的registrationID的集合 /// 成功isResultOK()=true,失败isResultOK()=false /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public DefaultResult addRemoveDevicesFromTag(String theTag, HashSet toAddUsers, HashSet toRemoveUsers) { return _deviceClient.addRemoveDevicesFromTag(theTag, toAddUsers, toRemoveUsers); } /// /// 删除一个标签,以及标签与设备之间的关联关系 /// /// 要删除的tag /// 可选参数,不填则默认为所有平台 /// 成功result=true,失败result=false /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public DefaultResult deleteTag(String theTag, String platform) { return _deviceClient.deleteTag(theTag, platform); } /// /// 查询别名 /// /// 要查询的别名 /// 可选参数,不填则默认为所有平台 /// 返回alias的列表 /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public AliasDeviceListResult getAliasDeviceList(String alias, String platform) { return _deviceClient.getAliasDeviceList(alias, platform); } /// /// 删除别名,以及该别名与设别之间的绑定关系 /// /// 要删除的别名 /// 可选参数,不填则默认为所有平台 /// 成功isResultOK()=true,失败isResultOK()=false /// 包含http错误码:如401,404等,错误信息,JPush returen code和JPush returen mssage /// 包含错误的信息 /// public DefaultResult deleteAlias(String alias, String platform) { return _deviceClient.deleteAlias(alias, platform); } } }