@@ -110,10 +110,22 @@ public void testGlobalExceed() {
110110 .setMessage (Message .content (LONG_TEXT_2 ))
111111 .build ();
112112 System .out .println ("Size: " + LONG_TEXT_2 .getBytes ().length );
113- Assert .assertTrue ( "Should exceed - " + LONG_TEXT_2 .getBytes ().length ,
113+ Assert .assertFalse ( "Shouldn't exceed - " + LONG_TEXT_2 .getBytes ().length ,
114114 payload .isGlobalExceedLength ());
115115 }
116116
117+ @ Test
118+ public void testGlobalExeed2 () {
119+ PushPayload payload = PushPayload .newBuilder ()
120+ .setPlatform (Platform .all ())
121+ .setAudience (Audience .all ())
122+ .setMessage (Message .content (LONG_TEXT_3 ))
123+ .build ();
124+ System .out .println ("Size: " + LONG_TEXT_3 .getBytes ().length );
125+ Assert .assertTrue ("Should exeed - " + LONG_TEXT_3 .getBytes ().length ,
126+ payload .isGlobalExceedLength ());
127+ }
128+
117129 @ Test
118130 public void testIosExceed () {
119131 PushPayload payload = PushPayload .newBuilder ()
@@ -122,7 +134,7 @@ public void testIosExceed() {
122134 .setNotification (Notification .alert (LONG_TEXT_1 ))
123135 .build ();
124136 System .out .println ("Size: " + LONG_TEXT_1 .getBytes ().length );
125- Assert .assertTrue ( "Should exceed - " + LONG_TEXT_1 .getBytes ().length ,
137+ Assert .assertFalse ( "Shouldn't exceed - " + LONG_TEXT_1 .getBytes ().length ,
126138 payload .isIosExceedLength ());
127139 }
128140
@@ -132,10 +144,10 @@ public void testIosExceed2() {
132144 .setPlatform (Platform .all ())
133145 .setAudience (Audience .all ())
134146 .setNotification (Notification .newBuilder ().addPlatformNotification (
135- IosNotification .alert (LONG_TEXT_1 )).build ())
147+ IosNotification .alert (LONG_TEXT_3 )).build ())
136148 .build ();
137- System .out .println ("Size: " + LONG_TEXT_1 .getBytes ().length );
138- Assert .assertTrue ("Should exceed - " + LONG_TEXT_1 .getBytes ().length ,
149+ System .out .println ("Size: " + LONG_TEXT_3 .getBytes ().length );
150+ Assert .assertTrue ("Should exceed - " + LONG_TEXT_3 .getBytes ().length ,
139151 payload .isIosExceedLength ());
140152 }
141153
@@ -159,6 +171,57 @@ public void testIosExceed2() {
159171 + "本 Wiki 是极光推送 (JPush) 产品的开发者文档网站。"
160172 + "极光推送所有技术文档都在本 Wiki 里,没有别的提供渠道。同时,我们也在不断地补充、完善文档。"
161173 + "这些文档包括这样几种类型:常见问题、入门指南、API定义、教程等。" ;
174+ private static final String LONG_TEXT_3 = ""
175+ + "这是 Push API 最近的版本。"
176+ + "相比于 API v2 版本,v3 版本的改进为:"
177+ + "完全基于 https,不再提供 http 访问;"
178+ + "使用 HTTP Basic Authentication 的方式做访问授权。这样整个 API 请求可以使用常见的 HTTP 工具来完成,比如:curl,浏览器插件等;"
179+ + "推送内容完全使用 JSON 的格式;"
180+ + "支持的功能有所改进:支持多 tag 的与或操作;可单独发送通知或者自定义消息,也可同时推送通知与自定义消息;windows phone 目前只有通知。"
181+ + "向某单个设备或者某设备列表推送一条通知、或者消息。"
182+ + "推送的内容只能是 JSON 表示的一个推送对象。"
183+ + "调用地址:POST https://api.jpush.cn/v3/push"
184+ + "别名与标签使用教程 为什么需要别名与标签"
185+ + "推送消息时,要指定推送的对象:全部,某一个人,或者某一群人。"
186+ + "全部很好办,针对某应用“群发”就好了。Portal与API都支持向指定的 appKey 群发消息。"
187+ + "要指定向某一个特定的人,或者某一群特定的人,则相对复杂。"
188+ + "因为对于 JPush 来说,某一个人就是一个注册ID,这个注册ID与开发者App没有任何关系,或者说对开发者App是没有意义的。"
189+ + "如果要对开发者App有意义的某个特定的用户推送消息,则需要:把 JPush 注册用户与开发者App 用户绑定起来。"
190+ + "这个绑定有两个基本思路:"
191+ + "把绑定关系保存到 JPush 服务器端"
192+ + "把绑定关系保存到开发者应用服务器中"
193+ + "前者,就是这里要说到的:别名与标签的功能。这个机制简单易用,适用于大多数开发者。"
194+ + "后者,则是 JPush 提供的另外一套 RegistrationID 机制。这套机制开发者需要有应用服务器来维护绑定关系,不适用于普通开发者。"
195+ + "Android SDK r1.6.0 版本开始支持。"
196+ + "别名与标签的机制,其工作方式是:"
197+ + "客户端开发者App调用 setAliasAndTags API 来设置关系"
198+ + "JPush SDK 把该关系设置保存到 JPush Server 上"
199+ + "在服务器端推送消息时,指定向之前设置过的别名或者标签推送"
200+ + "SDK 支持的 setAliasAndTags 请参考相应的文档:别名与标签 API"
201+ + "使用过程中有几个点做特别说明:"
202+ + "App 调用 SDK setAliasAndTags API 时,r1.5.0 版本提供了 Callback 来返回设置状态。如果返回 6002 (超时)则建议重试"
203+ + "老版本没有提供 Callback 无设置状态返回,从而没有机制确定一定成功。建议升级到新版本"
204+ + "Portal 上推送或者 API 调用向别名或者标签推送时,可能会报错:不存在推送目标用户。"
205+ + "该报错表明,JPush Server 上还没有针对你所推送的别名或者标签的用户绑定关系,所以没有推送目标。"
206+ + "这时请开发者检查确认,开发者App是否正确地调用了 setAliasAndTags API,以及调用时是否网络不好,JPush SDK 暂时未能保存成功。"
207+ + "使用别名 用于给某特定用户推送消息。别名,可以近似地被认为,是用户帐号里的昵称。"
208+ + "使用标签 用于给某一群人推送消息。"
209+ + "标签类似于博客里为文章打上 tag ,即为某资源分类。"
210+ + "动态标签 JPush 提供的设置标签的 API 是在客户端的。"
211+ + "开发者如何做到在自己的服务器端动态去设置分组呢? 比如一个企业OA系统,经常需要去变更部门人员分组。以下是大概的思路:"
212+ + "设计一种自定义消息格式(业务协议),App解析后可以调用 JPush SDK setAliasAndTags API 来重新设置标签(分组)"
213+ + "例:{\" action\" :\" resetTags\" , \" newTags\" :[\" dep_level_1\" :\" A公司\" , \" dep_level_2\" :\" 技术部\" , \" dep_level_3\" "
214+ + ":\" Android开发组\" , \" address\" :\" 深圳\" , \" lang\" :\" zh\" ]}"
215+ + "要动态设置分组时,推送这条自定义消息给指定的用户"
216+ + "使用别名的机制,推送到指定的用户。"
217+ + "客户端App 调用 JPush SDK API 来设置新的标签"
218+ + "通过极光推送服务,主动、及时地向您的用户发起交互,向其推送聊天消息、日程提醒、活动预告、进度提示、动态更新等。"
219+ + "精准的目标用户和有价值的推送内容可以提升用户忠诚度,提高留存率与收入。"
220+ + "客户端 SDK 采用自定义的协议保持长连接,电量、流量消耗都很少。 "
221+ + "服务端先进技术架构,高并发可扩展性的云服务,经受过几亿用户的考验,"
222+ + "完全省去应用开发者自己维护长连接的设备和人力的成本投入。"
223+ + "简单的SDK集成方式,使开发商可以快速部署,更专注主营业务。灵活的推送入接入,"
224+ + "同时支持网站上直接推送,也提供 消息推送和送达统计的 API调用。 " ;
162225}
163226
164227
0 commit comments