jpush ios 通知声音隐藏声音,振动

小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
云推送服务第一品牌
关于推送,你可能忽略的那些事儿
推送是维持APP留存率最重要的方法之一,但是大多数APP开发者都没有正确意识到推送的意义,也没有建立起一套评估Push质量的方法。推送是一个典型的双刃剑,如果使用的好可以帮你提升留存率,可是使用不当,甚至滥用将会成为你APP的噩梦。但是不幸的是,我看到的大多是推送的不当使用。
1. 给用户一个允许推送的理由
之前看过一篇文章讲的很好,大概的意思是说你要任何事情的时候都请给一个需要的理由。作为APP开发者我们都知道,用户很少会反悔从前做过的设置。我举个简单的例子,如果用户在最初的时候禁止你访问他的通讯录,可能你就再也没有机会访问他的通讯录了。同理,如果用户最初的时候禁止你的推送消息,那么你可能就再也没有机会去为用户发送推送通知了。
所以在希望用户授予推送权限时,一定要给用户一个清晰的理由。以滴滴打车作为举例,如果一个用户第一次打开滴滴打车,就弹出窗口说,你是否允许APP为你推送消息,也许这个时候的通过率只有30%-50%左右。但是我们试想这样一个场景,当用户第一次打车时,APP提示说,允许弹出窗口可以让你在退出APP后依然收到司机的接单信息。那么这个时候被用户允许的概率就大大增大了。
2. 忽略Push设置
我们追溯一下Push的鼻祖,在PC Web时代我们如何做类似的事情,我们往往做一个网站,然后用Email通知用户各类的通知。以豆瓣来举例:我们可以通过Web设置在什么情况下会被Email通知,例如被关注,被豆邮,日记被评论等等。但是我们却不幸地发现,大多数的APP却没有对推送做这样细致的区分。
请大家意识到,Push的设置其实比Email的设置重要得多,因为当你去发不当的邮件去&打扰&用户时,用户最多把Email忽略,或者作为垃圾邮件。但是当你用不当地推送去打扰用户时,用户去删除APP远远比去手机的设置中去关闭推送容易得多!
所以请更细致地去设置你的推送,什么情况下需要推送?什么时候允许推送?是否需要接受更新通知等等等等。
3. 错误评价Push效果
我们在和一些客户做交流时,每个客户关心的问题大体如此:
A. 你们的到达率是多少? & 这是客户评价我们推送质量的指标&&&&&&&&&&&&&&&&&&&&&&
B. 大多数APP的点击率是多少? & 这是客户评价自己推送质量的指标
其实这是最典型的错误评价Push的指标,我们逐步来说:
A. 什么是到达率?其实在业界,并没有到达率的官方定义,其根本原因在于你无法定义什么叫做到达?是在线用户全部送达?那离线用户呢?离线用户多久送达算做送达?当客户问出这样的问题时,我往往并不愿意用官方的措辞去抛出一个漂亮的数字,而是更愿意去纠正客户的认知错误。
B. 而对于第二个问题,几乎是每个客户都会犯的错误。用户点击率越高越好么?答案是否定的。如我之前所说,推送是把双刃剑,用的好,他提高了APP的留存率,也就是通过推送增加了APP的打开数;但是用的不好,也如之前所说,用户关闭掉推送,甚至卸载掉APP。所以单单去看到点击数,而忽略了消极的影响是非常错误的评价指标。除了点击率,我们更需要去关注,这一次的推送目标,在下一次有多少已经是无法推送的,例如本次推送了用户编号1-100的用户,但是再一天后,1-100只有1-10是可达的,我们说本次推送的次日留存率只有10%,这样即便打开率是90%,也许都是一次不好的推送。
4. 设置合理的推送时间
这一点无须多说,大多的APP都知道我们要设置合理的推送推送,例如要在中午12点,下午6点左右发送推送可以获得较高的关注度和打开率。但是所有APP都没有关注到的一点是,是不是所有的用户都应该在这个时间段去推送,其实也就是我们并没有关注到推送时间的个性化,以及推送消息本身和推送时间之间的关系。
5. 合理设置推送声音
推送声音与推送本身一样,都是双刃剑。在前文中,我们知道,不当地推送会让用户关闭系统推送,甚至卸载掉APP。在上一段中,我们也知道,在不合理的时间去消息,会对用户造成打扰。那么到底是什么对用户造成打扰?其实就是推送声音本身。那么合理地利用推送声音其实也是合理推送很重要的一部分,而且也可以创造出很多不同的用法。例如我们可以对夜间的推送设置无声音;例如我们可以对&不确定的推送&(也就是新用户)设置无声模式等等。
6. 对Push一样进行A-B Test和灰度上线
做应用开发的人一定不陌生这两个概念,A-B测试和灰度上线。在推送领域,这一点依然重要,当我们发送一条广播消息时,我们并不确定这条消息的质量是好是坏,打开率如何,那么我们不妨先推送一小部分用户,看看打开率,留存率,然后再做进一步的推送。
最后,打一个小小的广告,送给我老板,作为我工作时间写文章的小小安慰。作者目前就职于极光推送(JPush),也是国内最大的推送服务提供商,我们除了提供高质量的推送服务质量之外,还愿意和各位开发者积极探讨关于推送的更多知识。
站长在关注推送 APIPOST /v3/push功能说明向某单个设备或者某设备列表推送一条通知、或者消息。推送的内容是 JSON 结构,其中包含平台信息,推送目标,通知内容,消息内容与可选参数。请求示例返回示例调用验证HTTP Header(头)里加一个字段(Key/Value对):其中 base64_auth_string 的生成算法为:base64(appKey:masterSecret)即,对 appKey 加上冒号,加上 masterSecret 拼装起来的字符串,再做 base64 转换。推送对象一个推送对象,以 JSON 格式表达,包含一条推送相关的所有信息,最多包含以下五个方面:关键字 含义必填推送平台设置必填推送设备指定可选通知内容体。是被推送到客户端的内容。与 message 一起二者必须有其一,可以二者并存可选消息内容体。是被推送到客户端的内容。与 notification 一起二者必须有其一,可以二者并存可选推送参数platformJPush 当前支持 Android, iOS, Windows Phone 三个平台的推送。其关键字分别为:&android&, &ios&, &winphone&。 推送到所有平台:指定特定推送平台: audience推送设备对象,表示一条推送可以被推送到哪些设备列表。确认推送设备对象,JPush 提供了多种方式,比如:别名、标签、注册ID、分群、广播等。all如果要发广播(全部设备),则直接填写 “all”。推送目标除广播外的设备选择方式,有如下几种:关键字 含义值类型说明tagJSON Array标签数组。多个标签之间是 OR 的关系,即取并集。用标签来进行大规模的设备属性、用户属性分群。一次推送最多 20 个 tag 。 有效的 tag 组成:字母(区分大小写)、数字、下划线、汉字。限制:每一个 tag 的长度限制为 40 字节。(判断长度需采用UTF-8编码)tag_andJSON Array标签AND数组。多个标签之间是 AND 关系,即取交集。注册与 tag 区分。一次推送最多 20 个 tag。 aliasJSON Array别名数组。多个别名之间是 OR 关系,即取并集。用别名来标识一个用户。一个设备只能绑定一个别名,但多个设备可以绑定同一个别名。一次推送最多 1000 个。 有效的 alias 组成:字母(区分大小写)、数字、下划线、汉字。限制:每一个 alias 的长度限制为 40 字节。(判断长度需采用UTF-8编码)registration_idJSON Array注册ID数组。多个注册ID之间是 OR 关系,即取并集。设备标识。一次推送最多 1000 个。
示例推送给全部(广播):推送给多个标签(只要在任何一个标签范围内都满足):在深圳、广州、或者北京推送给多个标签(需要同时在多个标签范围内):在深圳并且是“女”推送给多个别名:推送给多个注册ID:可同时推送指定多类推送目标:在深圳或者广州,并且是 ”女“ “会员”notification“通知”对象,是一条推送的实体内容对象之一(另一个是“消息”),是会作为“通知”推送到客户端的。其下属属性包含 4 种,3 个平台属性,以及一个 &alert& 属性。alert通知的内容在各个平台上,都可能只有这一个最基本的属性 &alert&。这个位置的 &alert& 属性(直接在 notification 对象下),是一个快捷定义,各平台的 alert 信息如果都一样,则可不定义。如果各平台有定义,则覆盖这里的定义。上面定义的 notification 对象,将被推送到 &platform& 指定的多个平台,并且其通知 alert 信息都一样。androidAndroid 平台上的通知。被 JPush SDK 按照一定的通知栏样式展示。支持的字段有:关键字
含义说明alertstring必须通知内容这里指定了,则会覆盖上级统一指定的 alert 信息;内容可以为空字符串,则表示不展示到通知栏。这里不指定则上级 notification 必须指定。titlestring可选通知标题如果指定了,则通知里原来展示 App名称的地方,将展示成这个字段。builder_idint可选通知栏样式IDAndroid SDK 可设置通知栏样式,这里根据样式 ID 来指定该使用哪套样式。extrasJSON Object可选扩展字段。这里自定义 JSON 格式的 Key/Value 信息,以供业务使用。iosiOS 平台上 APNs 通知。该通知内容会由 JPush 代理发往 Apple APNs 服务器,并在 iOS 设备上在系统通知的方式呈现。该通知内容满足 APNs 的规范,支持的字段如下:关键字
含义说明alertstring必须通知内容这里指定了,将会覆盖上级统一指定的 alert 信息;内容为空则不展示到通知栏。支持 emoji 表情。这里不指定则上级 notification 必须指定。soundstring可选通知提示声音如果无此字段,则此消息无声音提示;有此字段,如果找到了指定的声音就播放该声音,否则播放默认声音,如果此字段为空字符串,iOS 7 为默认声音,iOS 8 为无声音。 说明:JPush 官方 API Library (SDK) 会默认填充声音字段。提供另外的方法关闭声音。badgestring可选应用角标如果不填,表示不改变角标数字;否则把角标数字改为指定的数字;为 0 表示清除。新增支持 &+1& 功能,详情参考: 说明:JPush 官方 API Library (SDK) 会默认填充 badge 值为 &+1&。提供另外的方法不变更 badge 值。content-availableboolean可选推送唤醒推送的时候携带&content-availiable&:true 说明是 Background Remote Notification,如果不携带此字段则是普通的Remote Notification。详情参考:categorystring可选 设置APNs payload中的&category&字段值。 说明:ios8才支持该字段。extrasJSON Object可选扩展字段这里自定义 Key/value 信息,以供业务使用。winphoneWindows Phone 平台上的通知。该通知由 JPush 服务器代理向微软的 MPNs 服务器发送,并在 Windows Phone 客户端的系统通知栏上展示。该通知满足 MPNs 的相关规范。当前 JPush 仅支持 toast 类型:关键字
含义说明alertstring必须通知内容会填充到 toast 类型 text2 字段上。这里指定了,将会覆盖上级统一指定的 alert 信息;内容为空则不展示到通知栏。这里不指定则上级 notification 必须指定。titlestring可选通知标题会填充到 toast 类型 text1 字段上。_open_pagestring可选点击打开的页面名称点击打开的页面。会填充到推送信息的 param 字段上,表示由哪个 App 页面打开该通知。可不填,则由默认的首页打开。extrasJSON Object可选扩展字段作为参数附加到上述打开页面的后边。 message应用内消息。或者称作:自定义消息,透传消息。此部分内容不会展示到通知栏上,JPush SDK 收到消息内容后透传给 App。App 需要自行处理。iOS 平台上,有此部分内容,才会推送应用内消息通道。Windows Phone 平台上,暂时不支持应用内消息。消息包含如下字段:关键字
含义说明msg_contentstring必填消息内容本身 titlestring可选消息标题 content_typestring可选消息内容类型 extrasJSON Object可选JSON 格式的可选参数 options推送可选项。当前包含如下几个可选项:关键字
含义说明sendnoint可选推送序号纯粹用来作为 API 调用标识,API 返回时被原样返回,以方便 API 调用方匹配请求与返回。time_to_liveint可选离线消息保留时长推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。默认 86400 (1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到。override_msg_idlong可选要覆盖的消息ID如果当前的推送要覆盖之前的一条推送,这里填写前一条推送的 msg_id 就会产生覆盖效果,即:1)该 msg_id 离线收到的消息是覆盖后的内容;2)即使该 msg_id Android 端用户已经收到,如果通知栏还未清除,则新的消息内容会覆盖之前这条通知;覆盖功能起作用的时限是:1 天。如果在覆盖指定时限内该 msg_id 不存在,则返回 1003 错误,提示不是一次有效的消息覆盖操作,当前的消息不会被推送。apns_productionboolean可选APNs是否生产环境True 表示推送生产环境,False 表示要推送开发环境; 如果不指定则为推送生产环境。 JPush 官方 API LIbrary (SDK) 默认设置为推送 “开发环境”。big_push_durationint可选定速推送时长(分钟)又名缓慢推送,把原本尽可能快的推送速度,降低下来,在给定的 n 分钟内,均匀地向这次推送的目标用户推送。最大值为 1440。未设置则不是定速推送。 调用返回HTTP 状态码参考文档:业务返回码Code描述详细解释实际提示信息HTTP Status Code1000系统内部错误服务器端内部逻辑错误,请稍后重试。 5001001只支持 HTTP Post 方法不支持 Get 方法。 4051002缺少了必须的参数必须改正。 4001003参数值不合法必须改正。 4001004验证失败必须改正,详情请看:。 4011005消息体太大必须改正。 通知 “iOS”:{ } 内的总体长度不超过:220 个字节(包括自定义参数和符号)。JPush 的 消息加通知 部分长度不超过 1K 字节。 4001008app_key 参数非法必须改正。 4001011没有满足条件的推送目标请检查audience 4001020只支持 HTTPS 请求必须改正。 4041030内部服务超时稍后重试 503推送校验 APIPOST 功能说明该 API 只用于验证推送调用是否能够成功,与推送 API 的区别在于:不向用户发送任何消息。 其他字段说明:同推送 API。其他参考获取推送送达API:老版本 Push v2 API:HTTP规范参考:Apple APNs 规范:Microsoft MPNs 规范:项目语言:JAVA
权限:read-only(如需更高权限请先加入项目)
Index: IosNotification.java
===================================================================
--- IosNotification.java (revision 0)
+++ IosNotification.java (revision 5)
@@ -0,0 +1,253 @@
+package cn.jpush.api.push.model.
+import java.util.HashM
+import java.util.M
+import cn.mon.ServiceH
+import cn.jpush.api.utils.P
+import com.google.gson.JsonE
+import com.google.gson.JsonO
+import com.google.gson.JsonP
+ * APNs 通知类
+ * 支持 APNs 默认的几个参数:
+ * &li&alert: 继承自父类 PlatformNotification 的 alert 属性;本类设置则覆盖。&/li&
+ * &li&badge: 支持 setBadge(int) 方法来设置;支持 incrBadge(int) 方法来增加。&/li&
+ * &li&sound: 支持 setSound(string) 方法来设置声音文件。&/li&
+ * &li&content-available: 用来支持后台推送。如果该值赋值为 1,表示开启后台推送。&/li&
+ * &li&extras: JSON object. 支持更多的自定义字段信息。&/li&
+ * 需要特别留意的是,JPush SDK 会对以下几个值有特别的默认设置考虑:
+ * &li&badge: 默认为 &+1&。如果需要取消 badge 值,需要显式地调用 disableBadge().&/li&
+ * &li&sound: 默认为 &&,即默认的声音提示。如果需要取消 sound 值,即不要声音,需要显式地调用 disableSound(). &/li&
+public class IosNotification extends PlatformNotification {
public static final String NOTIFICATION_IOS = &ios&;
private static final String DEFAULT_SOUND = &&;
private static final String DEFAULT_BADGE = &+1&;
private static final String BADGE = &badge&;
private static final String SOUND = &sound&;
private static final String CONTENT_AVAILABLE = &content-available&;
private static final String CATEGORY = &category&;
private static final String ALERT_VALID_BADGE = &Badge number should be 0~99999, &
+ &and can be prefixed with + to add, - to minus&;
private final boolean soundD
private final boolean badgeD
private final S
private final S
private final boolean contentA
private final S
private IosNotification(String alert, String sound, String badge,
boolean contentAvailable, boolean soundDisabled, boolean badgeDisabled,
String category,
Map&String, String& extras,
Map&String, Number& numberExtras,
Map&String, Boolean& booleanExtras,
Map&String, JsonObject& jsonExtras) {
super(alert, extras, numberExtras, booleanExtras, jsonExtras);
this.sound =
this.badge =
this.contentAvailable = contentA
this.soundDisabled = soundD
this.badgeDisabled = badgeD
this.category =
public static Builder newBuilder() {
return new Builder();
public static IosNotification alert(String alert) {
return newBuilder().setAlert(alert).build();
public String getPlatform() {
return NOTIFICATION_IOS;
public JsonElement toJSON() {
JsonObject json = super.toJSON().getAsJsonObject();
if (!badgeDisabled) {
if (null != badge) {
json.add(BADGE, new JsonPrimitive(this.badge));
json.add(BADGE, new JsonPrimitive(DEFAULT_BADGE));
if (!soundDisabled) {
if (null != sound) {
json.add(SOUND, new JsonPrimitive(sound));
json.add(SOUND, new JsonPrimitive(DEFAULT_SOUND));
if (contentAvailable) {
json.add(CONTENT_AVAILABLE, new JsonPrimitive(1));
if (null != category) {
json.add(CATEGORY, new JsonPrimitive(category));
public static class Builder extends PlatformNotification.Builder&IosNotification& {
private boolean contentAvailable =
private boolean soundDisabled =
private boolean badgeDisabled =
public Builder setSound(String sound) {
this.sound =
public Builder disableSound() {
this.soundDisabled =
public Builder incrBadge(int badge) {
if (!ServiceHelper.isValidIntBadge(Math.abs(badge))) {
LOG.warn(ALERT_VALID_BADGE);
if (badge &= 0) {
this.badge = &+& +
this.badge = && +
public Builder setBadge(int badge) {
if (!ServiceHelper.isValidIntBadge(badge)) {
LOG.warn(ALERT_VALID_BADGE);
this.badge = && +
* equals to: +1
public Builder autoBadge() {
return incrBadge(1);
public Builder disableBadge() {
this.badgeDisabled =
public Builder setContentAvailable(boolean contentAvailable) {
this.contentAvailable = contentA
public Builder setCategory(String category) {
this.category =
public Builder setAlert(String alert) {
this.alert =
public Builder addExtra(String key, String value) {
Preconditions.checkArgument(! (null == key), &Key should not be null.&);
if (null == value) {
LOG.debug(&Extra value is null, throw away it.&);
if (null == extrasBuilder) {
extrasBuilder = new HashMap&String, String&();
extrasBuilder.put(key, value);
public Builder addExtras(Map&String, String& extras) {
if (null == extras) {
LOG.warn(&Null extras param. Throw away it.&);
if (null == extrasBuilder) {
extrasBuilder = new HashMap&String, String&();
for (String key : extras.keySet()) {
extrasBuilder.put(key, extras.get(key));
public Builder addExtra(String key, Number value) {
Preconditions.checkArgument(! (null == key), &Key should not be null.&);
if (null == value) {
LOG.debug(&Extra value is null, throw away it.&);
if (null == numberExtrasBuilder) {
numberExtrasBuilder = new HashMap&String, Number&();
numberExtrasBuilder.put(key, value);
public Builder addExtra(String key, Boolean value) {
Preconditions.checkArgument(! (null == key), &Key should not be null.&);
if (null == value) {
LOG.debug(&Extra value is null, throw away it.&);
if (null == booleanExtrasBuilder) {
booleanExtrasBuilder = new HashMap&String, Boolean&();
booleanExtrasBuilder.put(key, value);
public Builder addExtra(String key, JsonObject value) {
Preconditions.checkArgument(! (null == key), &Key should not be null.&);
if (null == value) {
LOG.debug(&Extra value is null, throw away it.&);
if (null == jsonExtrasBuilder) {
jsonExtrasBuilder = new HashMap&String, JsonObject&();
jsonExtrasBuilder.put(key, value);
public IosNotification build() {
return new IosNotification(alert, sound, badge, contentAvailable,
soundDisabled, badgeDisabled, category,
extrasBuilder, numberExtrasBuilder, booleanExtrasBuilder, jsonExtrasBuilder);
(C)&&2013&&Alibaba&&Inc.&&All&&rights&&resvered.
Powered by加入应用集
云安装到手机
<button type="button" class="btn btn-default ex-btn-glyphicon hidden-xs" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-container="body" data-html="true" title="扫描二维码下载到手机" data-content="">二维码
酷安点评:神魔联盟这种ARPG的游戏小编是最喜欢的,简单粗暴。
我的评分(未评分)
软件名称:神魔联盟
APK名称:<.t4game.smlm.qihoo360
最新版本:1.1.0
支持ROM:2.3, 2.3.1, 2.3.2及更高版本
界面语言:简体中文
软件大小:56.74 M
更新日期:
开发者:北京呈天时空信息技术有限公司
android.permission.GET_TASKS获取任务信息 允许程序获取当前或最近运行的应用
android.permission.READ_EXTERNAL_STORAGE读取外部存储 读取外部存储,如sdcard
android.permission.RECEIVE_SMS接收短信 接收短信
android.permission.ACCESS_COARSE_LOCATION获取粗略位置 通过WiFi或移动基站的方式获取用户粗略的经纬度信息,定位精度大概误差在30~1500米
android.permission.ACCESS_FINE_LOCATION获取精确位置 通过GPS芯片接收卫星的定位信息,定位精度达10米以内
android.permission.RESTART_PACKAGES结束系统任务 结束任务通过restartPackage(String)方法,该方式将在未来放弃
android.permission.MOUNT_UNMOUNT_FILESYSTEMS挂载文件系统 挂载、反挂载外部文件系统
android.permission.VIBRATE使用振动 允许振动
android.permission.MODIFY_AUDIO_SETTINGS修改声音设置 修改声音设置信息
android.permission.INTERNET访问网络 访问网络连接,可能产生GPRS流量
android.permission.WAKE_LOCK唤醒锁定 允许程序在手机屏幕关闭后后台进程仍然运行
android.permission.READ_PHONE_STATE读取电话状态 访问电话状态
android.permission.WRITE_EXTERNAL_STORAGE写入外部存储 允许程序写入外部存储,如SD卡上写文件
android.permission.ACCESS_NETWORK_STATE获取网络状态 获取网络信息状态,如当前的网络连接是否有效
android.permission.ACCESS_WIFI_STATE获取WiFi状态 获取当前WiFi接入的状态以及WLAN热点的信息
android.permission.CHANGE_WIFI_STATE改变WiFi状态 改变WiFi状态
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS访问额外定位命令 允许程序访问额外的定位提供者指令,一般用于帮助开发者调试应用
android.permission.CHANGE_NETWORK_STATE改变网络状态 改变网络状态如是否能联网
android.permission.SEND_SMS发送短信 发送短信
android.permission.SYSTEM_ALERT_WINDOW显示系统窗口 显示系统窗口
android.permission.GET_ACCOUNTS访问账户Gmail列表 访问GMail账户列表
android.permission.CAMERA拍照权限 允许访问摄像头进行拍照
android.permission.DISABLE_KEYGUARD禁用键盘锁 允许程序禁用键盘锁
android.permission.READ_CONTACTS读取联系人 允许应用访问联系人通讯录信息
android.permission.READ_SMS读取短信内容 读取短信内容
android.permission.WRITE_SMS编写短信 允许编写短信
<.t4game.t4dota.A360.permission.JPUSH_MESSAGE
android.permission.RECEIVE_USER_PRESENT
android.permission.ACCESS_COARSE_UPDATES
android.permission.SYSTEM_OVERLAY_WINDOW
android.permission.ACCESS_DOWNLOAD_MANAGER
加入应用集
《神魔联盟》2014年最强3D ARPG手机网游,全新模式,融合ARPG、大型MMO、对战竞技等多重模式,支持iOS和安卓两大热门平台,完美适配多种主流智能手机机型。
玩家将回到最熟悉的魔兽大陆,通过祭坛招募众多熟悉的刀塔英雄到你麾下,在战斗中自由切换一个个传说中的英雄,享受多英雄作战所带来的快感,任务、副本、不断征服,大陆的阴霾会逐渐散开,你将最终看清大陆的一切真相!丰富多样的PVE、PVP系统锤炼你的军团,你将逐渐强大起来,最终成为大陆不朽的传说。
★ 手机MOBA开山之作 用手机玩DOTA 随时随地刀个痛快
★ 自主研发3D引擎 1080P唯美西方魔幻
★ 配置覆盖伍佰元机型 低端机也能完美体验
★ 200+英雄 200+技能 6种职业随意组合
★ 多人同屏即时战斗 尽享极致PK快感
★ 酷炫大招特效 超爽连击体验
★ 英雄自由切换 BOSS随心挑战
★ 即时战场 万人厮杀 大型团战 气势恢宏
★ 极低流量消耗 畅爽对战体验
分类标签:
修复了试炼可以卡属性的bug;
修复了当战队等级大于20级,切换英雄等级小于20级英雄无法被攻击的bug;
对UI更换和整合;
可以将额外的英雄放置到支援位,给上阵英雄增加相应的属性;
增加了公会技能功能,会长和副会长可通过消耗公会资金进行技能的解锁与升级,会员通过消耗自己的公会贡献进行学习,增加上阵英雄的属性;
每日可通过投币增加公会贡献、公会资金、公会徽章;
公会任务可使用公会徽章来刷新星级,星级越高奖励越丰厚
更新版本:1.1.0
更新版本:1.1.0
收录版本:1.0.2
图标和另一个网游很像。。
form>div>textarea" data-dock="left"
data-placement="top">
form').submit();">回复

我要回帖

更多关于 jpush 关闭声音 的文章

 

随机推荐