Files
lserp_cs_6.0/插件库/Lskj.Push/JPushClient.cs
T
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

228 lines
12 KiB
C#

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