Skip to content

Commit ba26093

Browse files
author
caiyg
committed
修改Android平台Notification+Message长度限制为4000字节
1 parent 41a4c78 commit ba26093

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

src/main/java/cn/jpush/api/push/model/PushPayload.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class PushPayload implements PushModel {
2929
private static final String OPTIONS = "options";
3030
private static final String SMS = "sms_message";
3131

32-
private static final int MAX_GLOBAL_ENTITY_LENGTH = 1200; // Definition acording to JPush Docs
32+
private static final int MAX_GLOBAL_ENTITY_LENGTH = 4000; // Definition acording to JPush Docs
3333
private static final int MAX_IOS_PAYLOAD_LENGTH = 220; // Definition acording to JPush Docs
3434

3535
private static Gson _gson = new Gson();

src/test/java/cn/jpush/api/push/model/PushPayloadTest.java

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,10 @@ public void testGlobalExceed() {
107107
PushPayload payload = PushPayload.newBuilder()
108108
.setPlatform(Platform.all())
109109
.setAudience(Audience.all())
110-
.setMessage(Message.content(LONG_TEXT_2))
110+
.setMessage(Message.content(LONG_TEXT_3))
111111
.build();
112-
System.out.println("Size: " + LONG_TEXT_2.getBytes().length);
113-
Assert.assertTrue("Should exceed - " + LONG_TEXT_2.getBytes().length,
112+
System.out.println("Size: " + LONG_TEXT_3.getBytes().length);
113+
Assert.assertTrue("Should exceed - " + LONG_TEXT_3.getBytes().length,
114114
payload.isGlobalExceedLength());
115115
}
116116

@@ -159,6 +159,57 @@ public void testIosExceed2() {
159159
+ "本 Wiki 是极光推送 (JPush) 产品的开发者文档网站。"
160160
+ "极光推送所有技术文档都在本 Wiki 里,没有别的提供渠道。同时,我们也在不断地补充、完善文档。"
161161
+ "这些文档包括这样几种类型:常见问题、入门指南、API定义、教程等。";
162+
private static final String LONG_TEXT_3 = ""
163+
+ "这是 Push API 最近的版本。"
164+
+ "相比于 API v2 版本,v3 版本的改进为:"
165+
+ "完全基于 https,不再提供 http 访问;"
166+
+ "使用 HTTP Basic Authentication 的方式做访问授权。这样整个 API 请求可以使用常见的 HTTP 工具来完成,比如:curl,浏览器插件等;"
167+
+ "推送内容完全使用 JSON 的格式;"
168+
+ "支持的功能有所改进:支持多 tag 的与或操作;可单独发送通知或者自定义消息,也可同时推送通知与自定义消息;windows phone 目前只有通知。"
169+
+ "向某单个设备或者某设备列表推送一条通知、或者消息。"
170+
+ "推送的内容只能是 JSON 表示的一个推送对象。"
171+
+ "调用地址:POST https://api.jpush.cn/v3/push"
172+
+ "别名与标签使用教程 为什么需要别名与标签"
173+
+ "推送消息时,要指定推送的对象:全部,某一个人,或者某一群人。"
174+
+ "全部很好办,针对某应用“群发”就好了。Portal与API都支持向指定的 appKey 群发消息。"
175+
+ "要指定向某一个特定的人,或者某一群特定的人,则相对复杂。"
176+
+ "因为对于 JPush 来说,某一个人就是一个注册ID,这个注册ID与开发者App没有任何关系,或者说对开发者App是没有意义的。"
177+
+ "如果要对开发者App有意义的某个特定的用户推送消息,则需要:把 JPush 注册用户与开发者App 用户绑定起来。"
178+
+ "这个绑定有两个基本思路:"
179+
+ "把绑定关系保存到 JPush 服务器端"
180+
+ "把绑定关系保存到开发者应用服务器中"
181+
+ "前者,就是这里要说到的:别名与标签的功能。这个机制简单易用,适用于大多数开发者。"
182+
+ "后者,则是 JPush 提供的另外一套 RegistrationID 机制。这套机制开发者需要有应用服务器来维护绑定关系,不适用于普通开发者。"
183+
+ "Android SDK r1.6.0 版本开始支持。"
184+
+ "别名与标签的机制,其工作方式是:"
185+
+ "客户端开发者App调用 setAliasAndTags API 来设置关系"
186+
+ "JPush SDK 把该关系设置保存到 JPush Server 上"
187+
+ "在服务器端推送消息时,指定向之前设置过的别名或者标签推送"
188+
+ "SDK 支持的 setAliasAndTags 请参考相应的文档:别名与标签 API"
189+
+ "使用过程中有几个点做特别说明:"
190+
+ "App 调用 SDK setAliasAndTags API 时,r1.5.0 版本提供了 Callback 来返回设置状态。如果返回 6002 (超时)则建议重试"
191+
+ "老版本没有提供 Callback 无设置状态返回,从而没有机制确定一定成功。建议升级到新版本"
192+
+ "Portal 上推送或者 API 调用向别名或者标签推送时,可能会报错:不存在推送目标用户。"
193+
+ "该报错表明,JPush Server 上还没有针对你所推送的别名或者标签的用户绑定关系,所以没有推送目标。"
194+
+ "这时请开发者检查确认,开发者App是否正确地调用了 setAliasAndTags API,以及调用时是否网络不好,JPush SDK 暂时未能保存成功。"
195+
+ "使用别名 用于给某特定用户推送消息。别名,可以近似地被认为,是用户帐号里的昵称。"
196+
+ "使用标签 用于给某一群人推送消息。"
197+
+ "标签类似于博客里为文章打上 tag ,即为某资源分类。"
198+
+ "动态标签 JPush 提供的设置标签的 API 是在客户端的。"
199+
+ "开发者如何做到在自己的服务器端动态去设置分组呢? 比如一个企业OA系统,经常需要去变更部门人员分组。以下是大概的思路:"
200+
+ "设计一种自定义消息格式(业务协议),App解析后可以调用 JPush SDK setAliasAndTags API 来重新设置标签(分组)"
201+
+ "例:{\"action\":\"resetTags\", \"newTags\":[\"dep_level_1\":\"A公司\", \"dep_level_2\":\"技术部\", \"dep_level_3\""
202+
+ ":\"Android开发组\", \"address\":\"深圳\", \"lang\":\"zh\"]}"
203+
+ "要动态设置分组时,推送这条自定义消息给指定的用户"
204+
+ "使用别名的机制,推送到指定的用户。"
205+
+ "客户端App 调用 JPush SDK API 来设置新的标签"
206+
+ "通过极光推送服务,主动、及时地向您的用户发起交互,向其推送聊天消息、日程提醒、活动预告、进度提示、动态更新等。"
207+
+ "精准的目标用户和有价值的推送内容可以提升用户忠诚度,提高留存率与收入。"
208+
+ "客户端 SDK 采用自定义的协议保持长连接,电量、流量消耗都很少。 "
209+
+ "服务端先进技术架构,高并发可扩展性的云服务,经受过几亿用户的考验,"
210+
+ "完全省去应用开发者自己维护长连接的设备和人力的成本投入。"
211+
+ "简单的SDK集成方式,使开发商可以快速部署,更专注主营业务。灵活的推送入接入,"
212+
+ "同时支持网站上直接推送,也提供 消息推送和送达统计的 API调用。 ";
162213
}
163214

164215

0 commit comments

Comments
 (0)