Moved to GitHub

已迁移到 GitHub

Project Description (项目介绍)
JPush.NET is .NET Server SDK for JPush. It can help you send, monitor and manage all your JPush messages by programming, following JPush official REST API.
(JPush.NET 是基于.NET平台的JPush服务器端的SDK。用来帮助开发者以编程的方式使用JPush官方REST API来发送、监视和管理所有的JPush推送消息。)

 

Source Code: C#

.NET framework: 4.0


Click here to view JPush official document.
(点击 这里 查看JPush官方文档.)

 

IMPORTANT NOTE (重要通告):

New way to install JPush.NET: run the following NuGet command in the Package Manager Console

(新增安装JPush.NET 的方式: 使用NuGet来安装)

PM> Install-Package JPush.NET



This project contains following parts:(项目包含2部分)

  • Pure API client, following official REST API. You can download or review documentation.
  • (基于官方REST API的纯客户端。你可以从这里下载 使用或者 查看文档.)
  • ASP.NET MVC based Web Portal for basic operations and simple configuration. Comming soon.
  • (基于ASP.NET MVC的网页示例,包括基本的操作和简单的配置。即将推出)

 

IMPORTANT NOTE (重要通告):

  • JPush Server SDK 1.0.0 is for JPush v2, which would be retired by JPush officially.
  • (JPush 服务器 SDK 1.0.0 是针对JPush v2版本,该版本不久之后将会被官方弃用.)
  • To support v3, please download & use latest version.
  • (如要支持JPush v3的服务器SDK,请下载和使用 最新版本.)
  • In latest version, to make developers take minor change, class JPushClient has been changed to use JPushClientV3 logics inside.
  • (在 最新版中,为了开发人员可以尽可能少的改动,类 JPushClient 已经被改造成内部使用JPushClientV3来处理业务)
  • Major changes in v3:(JPush V3中的主要改动)
    • Always use SSL for sending/querying push message.
    • (仅提供SSL的方式来处理发送/查询推送消息)
    • Use Basic Authentication in HTTP Header instead of hash code for authentication.
    • (使用HTTP 头信息中的基本验证来替代原有的哈希验证)
    • Split model to Message and Notification to for UI/logic.
    • (将原来模型的消息和推送部分独立,分别作用于屏幕UI上和app内部逻辑上)
    • Enhancement and improvement for PushType. They can be multiple used in one push for complicated filter requirements.
    • (提高和改善了PushType,他们在新版本中可以多次出现来完成更为复杂和灵活的目标筛选需求)
    • Add Windows Phone in Platform.
    • (增加对Windows Phone平台的支持)
    • Provide different models for each platform.
    • (对每个平台分别提供不同的模型来表达相关数据)

Sample for class JPushClientV3: (使用 类JPushClientV3的示例)

Here is a sample based on .NET console application.(这是一个基于.NET控制台应用程序的示例)

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using ifunction.JPush.V3;
using Newtonsoft.Json;
namespace ifunction.JPush.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var appKey = "1234567890abcdef"; // Your App Key from JPush
            var masterSecret = "1234567890abcdef"; // Your Master Secret from JPush

Dictionary<string, string> customizedValues = new Dictionary<string, string>(); customizedValues.Add("CK1", "CV1"); customizedValues.Add("CK2", "CV2");
JPushClientV3 client = new JPushClientV3(appKey, masterSecret); Audience audience = new Audience(); // In JPush V3, tag can be multiple added with different values. // In following code, it is to send push to those who are in ((Tag1 AND Tag2) AND (Tag3 OR Tag4)) // If you want to send to all, please use: audience.Add(PushTypeV3.Broadcast, null); audience.Add(PushTypeV3.ByTagWithinAnd, new List<string>(new string[] { "Tag1", "Tag2" })); audience.Add(PushTypeV3.ByTagWithinOr, new List<string>(new string[] { "Tag3", "Tag4" }));
// In JPush V3, Notification would not be display on screen, it would be transferred to app instead. // And different platform can provide different notification data. Notification notification = new Notification { AndroidNotification = new AndroidNotificationParameters { Title = "JPush provides V3.", Alert = "JPush V2 would be retired soon.", CustomizedValues = customizedValues }, iOSNotification = new iOSNotificationParameters { Badge = 1, Alert = "JPush V2 would be retired soon.", Sound = "YourSound", CustomizedValues = customizedValues } };
var response = client.SendPushMessage(new PushMessageRequestV3 { Audience = audience, Platform = PushPlatform.AndroidAndiOS, IsTestEnvironment = true, AppMessage = new AppMessage { Content = "Hello, this is a test push of V3 from .NET. Have a nice day!", CustomizedValue = customizedValues }, Notification = notification });
Console.WriteLine(response.ResponseCode.ToString() + ":" + response.ResponseMessage); Console.WriteLine("Push sent."); Console.WriteLine(response.ResponseCode.ToString() + ":" + response.ResponseMessage);
List<string> idToCheck = new List<string>(); idToCheck.Add(response.MessageId);
var statusList = client.QueryPushMessageStatus(idToCheck);
Console.WriteLine("Status track is completed."); if (statusList != null) { foreach (var one in statusList) { Console.WriteLine(string.Format("Id: {0}, Android: {1}, iOS: {2}", one.MessageId, one.AndroidDeliveredCount, one.ApplePushNotificationDeliveredCount)); } }
Console.WriteLine("Press any key to exit."); Console.Read(); } } }

RESTful API reference: http://docs.jpush.cn/display/dev/Push-API-v3

IMPORTANT NOTE(重要通告):
If you already use JPushClient V2 (Class: JPushClient), you can continue to use that. SDK Library would convert the old PushMessageRequest to PushMessageRequestV3 and send request based on JPush V3.
(如果你已经使用JPushClient V2,即SDK中的类 JPushClient,你可以继续使用它。SDK类库将在内部自动将PushMessageRequest转换到PushMessageRequestV3,并以V3形式访问JPush服务.)

Sample for JPushClient:

Here is a sample based on .NET console application.

class Program
{
      static void Main(string[] args)
      {
          var appKey = "1234567890abcdef"; // Your App Key from JPush
          var masterSecret = "1234567890abcdef"; // Your Master Secret from JPush
          
Dictionary<string, string> customizedValues = new Dictionary<string, string>(); customizedValues.Add("CK1", "CV1"); customizedValues.Add("CK2", "CV2"); JPushClient client = new JPushClient(appKey, masterSecret, false);
var response = client.SendPushMessage(new PushMessageRequest { MessageType = MessageType.Notification, Platform = PushPlatform.Android, Description = "DotNET", PushType = PushType.Broadcast, IsTestEnvironment = true, Message = new PushMessage { Content = "Hello, this is a test push from .NET. Have a nice day!", PushTitle = "A title.", Sound = "YourSound", CustomizedValue = customizedValues } });
Console.WriteLine(response.ResponseCode.ToString() + ":" + response.ResponseMessage); Console.WriteLine("Push sent."); Console.WriteLine(response.ResponseCode.ToString() + ":" + response.ResponseMessage);
List<string> idToCheck = new List<string>(); idToCheck.Add(response.MessageId);
var statusList = client.QueryPushMessageStatus(idToCheck); Console.WriteLine("Status track is completed.");
if (statusList != null) { foreach (var one in statusList) { Console.WriteLine(string.Format("Id: {0}, Android: {1}, iOS: {2}", one.MessageId, one.AndroidDeliveredCount, one.ApplePushNotificationDeliveredCount)); } }
Console.WriteLine("Press any key to exit."); Console.Read(); } }

RESTful API reference: http://docs.jpush.cn/display/dev/Index



If you have any question or concern, you can contact me.
(如果你在使用过程中有任何问题或疑问,请联系 .)

If you are so kind to DONATE this project, please use Alipay app to scan the following QR for payment. Very appreciate!.
(如果愿意资助此项目,请使用支付宝移动客户端扫描以下二维码提供资金帮助,非常感激!)

Last edited Apr 17, 2016 at 5:02 PM by rynnwang, version 17