常见问题 - JPush 合集(持续更新)

标签: #<Tag:0x00007f657ff34af8>

Android 自定义声音

ios 自定义声音戳这里


如果收到通知没有声音,大家要首先检查下 App 设置-通知声音和手机系统声音是不是关了!

通知消息不支持自定义声音资源,只能自定义通知栏样式,设置系统声音或者关掉

Android 从 338 版本开始支持设置 sound,仅针对 Android 8.0 以上

  • 完全自己实现:

    1. 推送自定义消息(只接收不展示)或者不展示的 Notification 消息(alert 为空,用附加字段传递信息)

    2. 自己在客户端对收到的自定义消息进行展示,同时去实现自定义声音

    3. 示例:「 征文 」Jpush 自定义推送声音

  • 去掉极光 Notification 的默认声音展示,然后自己去实现声音提醒。

    1. 使用自定义通知栏样式,可以简单控制下系统默认的声音,选择去掉默认的声音。

      • 注意客户端配置了通知栏样式后,setPushNotificationBuilder 会指定一个 ID 值,则你们 服务端推送时设置对应的 builder_id 来选择样式

      • 或者可以直接选择用 setDefaultPushNotificationBuilder 改变默认的编号为 0 的通知栏样式。

    2. 还可以使用「设置通知静默时间 API」

  • 使用 Notification Channel

    • JPush Android SDK v3.3.4 开始支持,与 Android 8.0 原生功能一致
    • Android 文档
    • 推送消息时仍需服务端所传的字段控制:channel_id
  • 使用自定义铃声配置(338版本支持)



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



1赞
极光推送自定义铃声
JPush 常见问题目录
android修改通知铃音
Java服务端怎么发自定义消息
JPush 常见问题目录
怎么关掉推送消息时的声音,震动
接收到通知没有声音如何设置
希望自定义铃声是在Java服务端推送设置还是在Androidios客户端自己设置
极光推送可以推送语音吗?不是本地的语音。
有没有设置震动和声音的方法
有那种付费服务 可以在用户接收到推送的同时播放语音嘛
修改系统提示音使用自定义提示音
Android8.0如何自定义推送声音
php 端自定义声音的附加字段怎么设置
react-native Android 怎样自定义通知声音
自定义消息和通知双推,怎么把通知屏蔽
ios里面可以通过sound参数设备推送语音,Android有类似的配置吗?
求java后台推送消息带自定义声音的demo
安卓通知推送携带声音
安卓h5app 使用的推送 推送的声音出不来
android 的推送和ios 的区别
php 服务端 sdk 设置通知音乐路径问题~ 客户端是ionic
关于极光推送自定义声音,很急
JPush 如何更改默认通知时的呼吸灯显示
极光推送messgae时候能不弹出通知栏嘛
安卓JPUSH设置自定义铃声
极光后台自定义消息调用的哪个接口
关于安卓音频文件推送
关于极光自定义提示音
手机端收到消息没有声音和震动
是否可以修改通知提醒声音?
极光推送过来的消息怎么实现自动语音播放
ajpush锁屏、后台运行的时候,接收服务端推送的消息无法播放本地音乐
android怎么修改推送提示音
java后台 如何设置安卓手机的声音开关
推送无需服务器端设置铃声振动,Android客户端自己控制铃声和振动
集成之后没有声音,没有角标

极光 SDK 与百度地图 SDK / 高德地图 SDK 产生冲突


这个问题的源头应该是:

JPush 提供多 CPU 的 so,用户的项目中就会有多 CPU 的文件夹,而百度 SDK 以前只提供一种 so,用户将此 so 复制到各个 CPU 中,在有些机型上加载 so 错误。此错误被误以为是不兼容,后来百度 SDK 也增加了相应 CPU 架构的 so 文件

两种做法:
1、你添加 JPush 的 so 的时候,也只添加百度 SDK 有的那几个 so 文件夹下的 so,其他的文件夹删掉.

这是一种可行性,但是在有些 cpu 机型上,仅有那几个框架的 cpu 的 so 库,会导致不兼容。

2、找一下百度地图是否有支持 全类型 cpu 的版本。或者可不可以将百度的 so 文件从 lib 中引入。

3、「部分手机出现 百度 SDK 获取定位为 null 的情况」,开发者解决办法:在 jniLibs 里面,添加对应 so 包,不要在 lib 中添加



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



通知栏图标显示不正常


极光官网的图标配置、应用名称都只是官网的类似于昵称的用处!修改官网的这两个设置,你客户端是不可能修改的,请去你的工程里面配置新的应用图标和名称!

iOS

iOS 推送是由系统管理的,推送弹窗上面的图标是系统自动获取的 App 的图标。
无法修改,无法控制。若有显示问题,请检查:

  • 是否图标设计不符合 iOS 的要求;
  • 或者与桌面背景有关;
  • 某个手机的 bug,换一个手机测试。

Android

  • 若没有 res/drawable-xxxx/jpush_notification_icon 这个资源,那么通知栏默认使用应用图标作为通知 icon

    • 在 5.0 以上系统将应用图标作为 statusbar icon 可能显示不正常,我们可以定义 没有阴影和渐变色、镂空背景的 icon 同名替换 res/drawable-xxxx/jpush_notification_icon 这个文件,请让你们制作图标的同事严格按照 Android 5.0 系统的要求制作,可网上搜索一下相关说明

    • 应该将 res 文件夹下的 所有 icon 文件都替换成自己的图标文件

    • 小米手机的 launcher 缓存可能有 bug,按照上述要求配置好后, 重启手机,再测试

  • 部分手机系统可能会默认使用 App 的 icon 当图标(即便有上述资源文件),定制一下通知栏样式,定制下图标,默认的方法如果不行,则可以使用 CustomPushNotificationBuilder 高级定制一下。

  • 特别注意推送的时候要指定 builder_id 为你自己定制的值,根据如下示例,则应该设置为 3:
    以下一部分代码只是用来示例!!请具体看文档!!!
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(this);
builder.statusBarDrawable = R.drawable.jpush_notification_icon;//图标文件
builder.notificationDefaults = Notification.DEFAULT_SOUND
JPushInterface.setPushNotificationBuilder(3, builder); //如果代码中定制为 2,则 builder_id 推送时应传 2

特别注意,Android 使用自定义通知栏,在推送的时候,必须设置对应的通知栏样式编号 builder_id,才可以!

1、官网推送的设置
推送-通知-目标平台选择 Android -点开可选参数-填写通知栏编号

2、调 API 推送的代码设置 Notification-Android-builder_id



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



1赞
通知栏图标改不过来,一直是极光默认的
通知栏图标白色 怎么改
JPush 常见问题目录
Moto手机推送 无法显示logo
Android版集成极光,如何更改通知栏的图标?
为什么我在我的应用设置里面设置了logo不生效不显示
关于Android的极光推送最新的SDK下安卓版本8.0的手机显示不了通知栏和下拉通知栏的图标
react native 使用jpush-react-native设置statusBarDrawable为图标test不显示
请问极光推送状态栏图标jpush_notification_icon明明不是灰色,显示却是灰色
安卓设备收到的极光推送通知没有显示应用图标
推送适配android8.0通知栏图标显示异常
极光发通知,如何换样式?
关于推送角标的显示与消除
极光推送图标显示问题
魅族手机上推送的图标在状态栏显示得不对
android 自定义通知栏
手机通知栏的消息展示
极光推送自定义图标问题,为什么通知栏图片一致是白色圆点
android6.0系统极光推送通知栏图标显示成一个圆圈里面一个白色的正方形
推送自带的Notification中没有我们的APP图标
Android图标如何设置图标跟随状态栏变化
Cordova开发的Android端推送的图标应该怎么修改
通知有时出现白块图标
通知图标只显示色块
极光推送图标不符合android5.0的要求
推送消息icon和app的icon不一样
通知栏图标问题,如何解决
Android部分手机接收到推送后图标显示不是APP的图标
jpush_notification_icon 设置问题
jpush-react-native android 集成报错
图标显示异常,求大神支招
极光推送通知栏没有应用图标
在使用极推送是推送通知logo显示问题
android 标题栏接收到的推送不显示自定义的图标
在控制台中发送包含内容的通知,一加3T 显示系统界面停止运行 手机只能重启
推送图标如何自己设置?
极光推送的推送图标怎么替换成自己的呢?
收到消息,为啥没声音只有震动。。。
为什么web发送消息 移动端 就能接收到推送消息 api端发送就接收不到啊
低分辨率手机收到通知问题
极光IM通知栏小图标如何设置
极光推送一加手机图标显示异常
推送出现错误标题和LOGO小图标不对
Android自定义通知栏样式时间显示
极光推送通知栏图标怎么改?
极光推送图标显示问题
三星手机显示的极光推送图标压缩,服务端的jpush-client3.3.11,请问可能是什么原因?
android 通知栏
本地推送无法显示 报错如下
android 自定义下拉通知栏

Error code 1008

备注:其他错误码列表 Android 点我;iOS 点我;服务端 点我


服务端错误说明:app_key does not exist ;客户端错误说明:AppKey 非法

  1. Appkey 前后是否多了一个空格

  2. 是不是把 Appkey 和 MasterSecret 传反了(服务端检查)

  3. Appkey 对应的应用是不是已经被删除了

  4. Appkey 在应用详情里,不是开发者标识 DevKey!



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



Error code 1009

备注:其他错误码列表 Android 点我;iOS 点我;服务端 点我


服务端:


客户端:

Android:当前的 Appkey 下没有创建 Android 应用。

  1. 检查 App 配置的这个 Appkey 对应的官网应用是否有填写 Android 的包名
    应用详情 - 推送设置 - Android - 展开

iOS:当前的 Appkey 下没有创建 iOS 应用

  1. 检查 App 配置的这个 Appkey 对应的官网应用是否有上传 iOS 证书

  2. 如果 iOS 证书已上传,查看证书状态,已验证才是正确的

  3. 如果 iOS 证书为已验证,可能的原因是:近几天你重新上传过证书,但是该证书是无效错误的,此时界面显示的验证状态是你以前上传的那个证书的。方法:重新上传一次证书,查看是否有报错,根据报错解决问题。



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



如何更新 / 覆盖消息:发送一条新的消息,更新 / 覆盖当前通知栏展示的消息


Push - options(可选参数) 中提供了对应字段

Android :override_msg_id

推送规则:

  • 推送消息 A,产生 MessageID1;

  • 推送消息 B,产生 MessageID2;(此时希望覆盖消息 A,传递 MessageID1)

  • 推送消息 C,产生 MessageID3;(此时希望覆盖消息 B,依旧传递 MessageID1)

  • 每次传递的都是最原始产生的那个 MessageID

效果:

  • 该 MessageID 离线收到的消息是覆盖后的内容;

  • 即使该 MessageID Android 端用户已经收到,如果通知栏还未清除,则新的消息内容会覆盖之前这条通知;

  • 覆盖功能起作用的时限是:1 天。如果在覆盖指定时限内该 MessageID 不存在,则返回 1003 错误,提示不是一次有效的消息覆盖操作,当前的消息不会被推送。

iOS :apns_collapse_id

规则:

  • collapse id 长度不可超过 64 bytes。

  • 推送消息 A,在可选字段中传值apns_collapse_id1;

  • 推送消息 B,此时希望更新消息 A ,则在可选字段中传值apns_collapse_id1

效果:

  • APNs 新通知如果匹配到当前通知中心有相同 apns-collapse-id 字段的通知,则会用新通知内容来更新它,并使其置于通知中心首位。

注:Android 覆盖消息不支持「将其置于通知中心首位」这一效果


可能你需要知道的内容:

1、极光提供了 CID 帮助大家避免重复请求推送消息

2、若不小心重复推送了消息,可以联系官方帮你删掉「当前还没有发下去的离线保存的消息」,已经发了的就没办法了。

注意:iOS 的 APNs 消息是没法删掉的,他不属于「当前还没有发下去的离线保存的消息」,因为在你请求之后我们会马上发给 Apple 服务器,若你的 iOS 用户处于断网状态,那么可以再给他推送一条 APNs 消息,则前一条消息将不会收到,原因是 设备离线期间推送多条,APNs 服务器只会离线保留一条

  • 点我头像私信我
  • 发邮件给 support@jpush.cn(邮箱负责人会很快的处理邮件,另此邮箱非我负责,发完后不要联系我让我迅速处理)
  • 联系 JPush QQ(QQ 由于信息过多,不保证及时回应):1206559424

需要提供的信息如下

  • 应用的 Appkey,需要删除离线消息的 MessageID(调用 API 请求成功后会返回 msgid ,官网 - 推送历史 - 筛选 web / API - 操作 - i 详情里面也可以查看该信息)

  • 如果有很多个 MessageID,请用英文逗号隔开 MessageID 的值,其他备注不需要,也请不要换行

  • 如果这多个 MessageID 针对的推送目标 Audience 是一样的,则根据极光离线消息保存规则,可仅提供最新 5 条消息的 MessageID 删除即可,此前的已经被自动删除

  • 极光官网个人账号 - 个人信息截图(确认你的身份)



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



服务器所在地、API推送看不到历史记录


「服务器所在地」信息:分北京机房和南方机房

关于位于北京机房的应用的一些特殊说明:

  • 调用方服务器也位于北京的话,使用 bjapi.push.jiguang.cn 作为调用地址,可以提升 API 响应速度。

  • 调用原地址 api.jpush.cn 给北京应用做推送,可能会出现「官网看不见推送历史记录,但消息实际已经下发」的问题,换成北京地址 bjapi.jiguang.cn 即可成功看到记录。

  • 如果加了 IP 白名单,就请使用对应机房的域名进行请求。

  • 暂时不支持将位于「南方机房」和「北京机房」的分为一组后用一个域名请求推送,在官网推送应没问题,但调 API 时,调 南方的域名只有南方机房的收的到,调 北京的域名之后北京机房的收的到。(当前应用均已迁移至北京机房,不再有这个问题。

  • 分组推送 group API ,必须使用对应机房的 API 推送才可以成功,如果你分组下的应用处于北京机房,则必须修改为北京域名。(当前已不需要这样处理,分组 API 上不再有南方和北京之分,开发者服务器也位于北京的情况下,使用北京域名的 API 只是会提升响应速度,根据需求选择使用)

  • Java SDK 是调用 ClientConfig 设置相关域名

ClientConfig clientConfig = ClientConfig.getInstance();
clientConfig.setPushHostName("hostName");

北京机房相关 api 文本,对照南方机房的进行替换:

New Push API & Schdule API:

New Report API:

New Device API:



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



JPush 常见问题目录
本地推送正常,放到服务器就推送多条
rest grouppush推送收不到,对单个推送可以
调 report API 查询不到结果
推送错误,app_key does not exist
Java开发环境和生产环境URL地址配置是否相同
全平台推送如何根据指定别名查询是否推送成功
Msgid does not exist
北京域名,分组推送异常
注册应用时服务器所在地如何修改?
推送通知突然不行,不管是别名还是标签
javasdk,应用分组推送成功,客户端没有收到推送的信息
C#服务端代码下发推送后,极光平台那边没有推送消息生成
请问下关于极光单个发送状态查询
调用送达状态查询接口返回3002 Msgid does not exist.
极光显示推送成功,但是手机和后台的推送历史没人收到该数据
有没有大神遇到这情况?设置了白名单还是报客户端没有权限
jpush在本地運行可以成功推送,打包到服務器上後推送失敗
jpush在本地運行可以成功推送,打包到服務器上後推送失敗
目前推送的很多用户都没法收到消息
web直接通过别名(一个目标)发送通知,记录显示多个目标发送成功,但手机并没有收到
开发环境可以推送,生产环境不行
开发环境可以推送,生产环境不行
分组推送失败,cannot find user by this audience
单个应用推送别名(Alias)没问题,但是在这个应用的分组上推送就提示找不到对应的目标推送
java开发消息推送成功,手机收不到消息提醒
JAVASDK 添加/删除用户标签疑惑求解释
代码显示发送成功,但是未收到信息
推送成功官网却没有推送成功的记录
php 极光推送返回报错
服务端推送消息成功,但是极光没有记录,服务端也接收不到
"error": {"message": "cannot find user by this audience", "code": 1011}
android端重构版包名发生改变引起的问题
发送自定义消息控制台可见
api推送返回成功,推送历史没记录,没收到推送提醒
api推送返回statusCode:0 极光后台没有推送记录 安卓手机也收不到消息
使用alias通过GroupPush推送失败的问题
同一套服务器代码。以前的申请的appkey就可以收到。新的就收不到
java服务器对接不上APP
求助:官方控制台发送Andorid能收到推送,服务器发送却收不到

如何推送和获取自定义的内容


如何推送

  • 添加扩展字段 extra
  • 推送自定义消息 Message

一、通知 Notification 对象的 Android 或 iOS 属性下分别传扩展字段 extra,通知内容 alert 会展示,extra 信息不会展示

  • 服务端代码如下:
"notification": {
        "android": {
            "alert": "Hi, JPush!",
            "title": "Send to Android",
            "builder_id": 1,
            "extras": {
                "newsid": 321//此处传 Android 的 extra 信息,key 和 value 都由你自己定义,可以传多个。
            }
        },
        "ios": {
            "alert": "Hi, JPush!",
            "sound": "default",
            "badge": "+1",
            "extras": {
                "newsid": 321//此处传 iOS 的 extra 信息,key 和 value 都由你自己定义,可以传多个。
            }
        }
    },
  • 官网推送 - 展开可选设置
    image

二、自定义消息 Message,与通知 Notification 一样,是一条推送的实体内容对象之一,主要区别在于自定义消息完全不会展示出来

代码示例:

    "message": {
        "msg_content": "Hi,JPush",
        "content_type": "text",
        "title": "msg",
        "extras": {
            "key": "value"// Message 信息同样可以添加 extra 字段
        }
    },

如何获取上述自定义信息


一、Notification 的 extra 信息的接收

Action - JPushInterface.ACTION_NOTIFICATION_RECEIVED.
JPushInterface.EXTRA_EXTRA
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
  // 取得Extras字段内容
  NSString *customizeField1 = [userInfo valueForKey:@"customizeExtras"]; //服务端中Extras字段,key是自己定义的

二、自定义消息 Message 的接收

Action - JPushInterface.ACTION_MESSAGE_RECEIVED
- (void)networkDidReceiveMessage:(NSNotification *)notification {
        NSDictionary * userInfo = [notification userInfo];
        NSString *content = [userInfo valueForKey:@"content"];
        NSString *messageID = [userInfo valueForKey:@"_j_msgid"];
        NSDictionary *extras = [userInfo valueForKey:@"extras"]; 
        NSString *customizeField1 = [extras valueForKey:@"customizeField1"]; //服务端传递的Extras附加字段,key是自己定义的     
    }


如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



关于设置.AndroidManifest.xml 中配置点击通知要打开的 activity 怎样才能打开Activity
怎么样通过点击的通知获取对应的自定义消息
如何实现收到消息的同时收到一个 URL
andorid推送设置了附加字段在测试包可以接受到,正式包貌似无作用?
java SDK如何发送图片链接呢?或者富文本图片
极光推送提示app_key format is error
iOS 通知消息。v3.1.0极光版本
求助:极光推送APIRequestException
PHP 发送自定义消息 前端收不到 extras 键值
push api 问题请教
发送数据,显示内容的问题
ios 推送的时候如何传参?
在应用未启动状态下,发送一条消息,IOS 的APNs通知能够接到,打开应用之后,还会不会接到Jpush推送的离线消息?
关于极光推送服务器端推送的一个问题
后台通过api推送弹窗消息,点击后消息体信息丢失
后台推送JPushInterface.EXTRA_EXTRA 有值 但是做点开通知操作 里面这个值就是空了
为什么我推送,点击通知栏的时候获取不到推送过来的数据?
自定义推送带json过来获取到的extras是null
有没有办法获得自定义的推送消息(自带参数,非通知)
android 获取不到registrationID,接受自定义消息为空
求java后台推送消息带自定义声音的demo
安卓点击通知栏收不到extras,只能收到title和alert
android获取推送通知,在线等
iOS推送只看到有alert属性,关于subtitle和body属性作用不是很清楚
服务端调用推送接口,返回null
android只能接收到内容 接收不到标题
可以接收自定义消息,但接收不到JPushInterface.EXTRA_MESSAGE)
ios 发送消息怎么加入一些参数,用来处理推送的界面跳转
JPush 常见问题目录
api发送通知1009
IOS10.0 swift 如何获取到extra的内容,只能获取到userinfo目前

iOS 如何设置 title 和 subtitle

注:Android 直接提供了字段设置 title,阅读文档


一、展示效果介绍:

iOS 10 以下支持设置标题 title ,设置后 title 值将取代通知栏上的应用名称:

iOS 10 及以上支持设置标题 title 和 subtitle,title 和 subtitle 自带加粗效果,无法取消,展示效果如下图:

二、官网推送传值介绍:

选择推送通知 → 选择 iOS 目标平台 → 展开可选设置 → iOS 可选设置下有 title 和 subtitle 选择

三、Push API 推送传值介绍:

iOS 的 alert 是支持 json 对象的,所以你可以传递一个固定格式的 json,比如:

{
    "notification" : {
         "ios" : {
                 "alert" : {
                     "title" : "JPush Title", //可选设置
                     "subtitle" : "JPush Subtitle" , //可选设置
                     "body" : "JPush Body" //必填,否则通知将不展示,在不设置 title 和 subtitle 时直接对 alert 传值即可,不需要特地写 body 字段
                 }, 
                 "sound" : "sound.caf", 
                 "badge" : 1, 
                 "extras" : {
                      "news_id" : 134, 
                      "my_key" : "a value"
                 }
            }
       }
}

极光提供的各语言的服务端 SDK 均已支持传 title 和 subtitle,如果你所使用的 SDK 不支持,请更新到最新版本。

1、Java SDK (从 3.2.11 版本开始支持)
example 示例: GitHub地址点我

    public static void testSendIosAlert() {
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);

        IosAlert alert = IosAlert.newBuilder()
                .setTitleAndBody("test alert", "subtitle", "test ios alert json")
                .setActionLocKey("PLAY")
                .build();
        try {
            PushResult result = jpushClient.sendIosNotificationWithAlias(alert, new HashMap<String, String>(), "alias1");
            LOG.info("Got result - " + result);
        } catch (APIConnectionException e) {
            LOG.error("Connection error. Should retry later. ", e);
        } catch (APIRequestException e) {
            LOG.error("Error response from JPush server. Should review and fix it. ", e);
            LOG.info("HTTP Status: " + e.getStatus());
            LOG.info("Error Code: " + e.getErrorCode());
            LOG.info("Error Message: " + e.getErrorMessage());
        }
    }

2、PHP SDK
example 示例: GitHub地址点我

try {
    $response = $client->push()
        ->setPlatform(array('ios', 'android'))
        ->addRegistrationId($registration_id)
        ->setNotificationAlert('Hi, JPush')
        ->iosNotification(array(
                      'title' => 'title', //可选设置
                      'subtitle' => 'subtitle', //可选设置
                      'body' => 'body'//必填,否则通知栏不展示
            ),array(
            'sound' => 'sound.caf',
            'extras' => array(
                'key' => 'value',
                'jiguang'
            ),
        ))
        ->options(array(
            // True 表示推送生产环境,False 表示要推送开发环境;如果不指定则默认为推送生产环境
            'apns_production' => false,
        ))
        ->send();
        print_r($response);
} catch (\JPush\Exceptions\APIConnectionException $e) {
    // try something here
    print $e;
} catch (\JPush\Exceptions\APIRequestException $e) {
    // try something here
    print $e;
}

3、C# SDK
alert 实现为接收 Object 类型



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



如何使通知消息换行展示


1、Android 大文本

  • Android SDK 3.0.0 以上版本支持,支持 api 16 以上的rom

  • 服务端推送在 notification → Android 中设置相关字段

  • 该功能属于原生 ROM 功能,部分深度定制 ROM 可能不支持。

  • 小米和魅族使用大文本查看正文需双指下拉。

2、iOS

  • iOS 通知本身即支持自动换行展示

  • iOS 主动换行添加 \n 即可,PHP 字符串如果用单引号 " 会导致换行失败,变成 \n,换成双引号即可。

  • iOS 还支持 title 和 subtitle ,与内容之间是分行展示的,会自动加粗,阅读设置方法



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



Error code 6009

备注:其他错误码列表 Android 点我;iOS 点我;服务端 点我


  • 由于权限问题,导致的 PushService 启动异常。

  • 出现该报错,一般都是集成失败了,正确集成不会报错。

  • 排查方案:查看客户端日志,根据错误信息来处理。

  • 需要官方协助时,直接提供完整的客户端日志,不要截取。



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



Error code 1003

备注:其他错误码列表 Android 点我;iOS 点我;服务端 点我


含义:参数值不合法

注:近期极光在迁移应用至北京机房,在原服务器端我们对错误的写法做了一些兼容,在新版本服务器将不再做兼容,可能会出现之前调 API 成功现在报错的情况,请务必阅读文档说明严格遵循参数的类型和传值要求!

可能的错误原因:

  • 类型不正确,各字段必须严格遵循文档的类型要求,如果自己排查不出原因,打开官方的 log,或断点调试,提供最后所传输的 json 数据给官方人员(在社区发帖)协助分析。

  • audience 非法,该问题常出现在 audience 传具体的 tag、alias、registrationID 等值时,仿照 “all” 的写法传为了字符串(错误写法),请注意在这种情况下传值的大括号前后不要有双引号,参考示例说明

  • sendno 类型不正确、越界。规定范围:(1-4294967295) ,int 类型

  • appkey 不存在,Appkey 未传值,或传值错误(Appkey 在官网应用信息处,不是账户信息中的 DevKey)

  • tags 推送最多支持 20 个、alias 推送最多支持 1000 个、registration_id 推送最多支持 1000 个、tag/ailas 长度不能超过 40 字节

  • tag/alias 、registration_id 值不合法

    • 有效的 tag 、alias 组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|¥

    • 有效的 RegistrationID 长度为 11 或 19 个字节,其中第一位有效字符 [0,1],第二位有效字符 [0-9a],第三位有效字符 [0-2],剩余位有效字符 [0-9a-f]。registrationID 只能在客户端集成后取到,不可以自行在服务端生成。

  • builder_id 必须为 1~1000 之间的数,int 类型。

  • time_to_live 是 int 类型,必须大于等于 0 ,最长可设置 10 天,即 864000,在范围外的值将报错。

  • apns_production : Boolean 类型,请传 false 或者 true ,不要传 0 或 1,也注意不要传成了字符串。

  • override_msg_id 不存在,如果你不需要覆盖功能,请去掉该字段,详细说明

    • 覆盖功能起作用的时限是:1 天。如果在覆盖指定时限内该 msg_id 不存在,则返回 1003 错误

    • 如果你使用的是某语言的 SDK ,在去掉该字段后仍有默认的值且不正确,请在源码中找到默认设置删除或者升级你的 SDK 版本。



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



如何针对性的将某条消息推送给某个用户


前提条件:客户端已安装了一个集成了极光 SDK 的 App ,且成功注册取到了 registrationID 值

  • 根据集成指南:AndroidiOS,将极光的 SDK 集成到自己的项目中去,在配置正确的情况下,初始化后可以取到 registrationID ,能取到该 ID 是初始化成功的标志!

  • 如果你是服务端开发,现在需要先测试一下推送功能,可以下载极光的 demo 进行测试
    在官网控制台 - 应用详情 - 推送设置 - Android - 使用浏览器扫码下载一个 Android 的 demo 安装到手机上。

极光提供的几种推送目标:API 文档说明官网推送页面

  • tag、alias、registrationID、segment 都可以用于实现本需求,一般在前三个字段中任选一个去实现。

  • 极光推送针对的是设备,tag、alias 等也是与设备进行的绑定,不管是使用什么样的推送目标,在极光服务器最终都是查询到满足条件的 registrationID 来使得推送送达到设备上。

思路参考:

根据一般的 App 逻辑,开发者会有自己的用户信息,在用户注册登陆后将用户信息传到自己服务器保存。

极光注册得到的 registrationID 是设备标识,不是开发者自己创建的用户,所以需要将「开发者的用户体系」和「极光设备」关联起来,如何做?

  1. 在上传用户信息给自己的服务器时,顺带将极光初始化得到的 registrationID 也对应上传并保存,可直接用该 ID 信息进行推送。该 ID 信息很重要,即便你不使用它进行推送,我的建议是也上传到服务器保存。

  2. 使用别名和标签对用户进行分类、做个性化的标识。

    • 比较简单的做法是:用我们的用户名作为别名值调用极光的客户端 api :Android旧接口Android新接口iOS 设置为该 App 的别名;对一些多用户集合性质的分类,就设置为标签,譬如某些用户都喜欢了「周杰伦」,将「周杰伦」三个字作为标签给这些用户设置,当你对「周杰伦」这个标签推送时,他们都会收到。

    • 设置别名标签成功后,也同样的与用户信息一起上传到开发者服务器上保存起来,当要选择推送的时候,在自己的数据库里面去查询即可得到。

    • 如果你们在思考「标签、别名应该是服务端还是客户端设置」,阅读本帖

  3. 需求:用户退出登录后不要收到针对用户的个性化通知,一般思路是项目的用户退出登录—删除别名—点击登录—重设别名。

  • 若你们不允许多设备登录,需要判断用户是否更换设备:将用户某唯一信息与获取到的 registrationID 一起上传,registrationID 与之前相比改变了,则判断为更换了设备。

    • 如果使用 registrationID 推送,则只需要设置推送到当前登录设备的 registrationID 即可,如果是使用别名、标签,请继续阅读:
  • 如果用户未在 A 手机主动点击退出登陆 ,直接在 B 手机登录:

  • 如果用户直接杀死 A 手机的 App,在 B 手机登录,登出信息无法及时送达到 A 手机上。

  • 需要注意:别名删除后 至 重设别名 期间,推送的消息, 在重设别名后,设备不会收到。
    特别说明: 如果 A 别名只有一个设备设置了,当 A 删除了别名,再给这个别名发消息就会报 1011 ,这是正常现象,请自行处理:捕获错误保存;删除别名后不要发消息等。

    • 若需要这期间的消息也被收到,需要自己服务器对此进行判断、保存、并在客户端重设别名后,重新向极光发起推送请求。

    • 若需要用户的历史推送消息可被查询,需要自己服务器那边去保存。

  • 注意:对别名标签的操作并不影响广播推送的消息和对 registrationID 推送的消息的接收,只是收不到对别名标签推送的消息,如何完全关闭推送服务:

    • Android 端调用 stoppush

      • 一种本地的状态操作,相当于手动终止 push 服务的效果,这个会导致同时关掉对所有类型消息的接收。
      • 极光推送所有的其他 API 调用都无效。
      • 必须调用 resumepush 才能恢复推送服务。
      • 恢复后,如果推送的消息还在time_to_live内,客户端会收到这条消息。
    • iOS 提示用户在手机[设置]-[通知]-[XX App]选择打开或关闭通知;
      iOS 8 以上可用此方法跳转到通知设置页让用户设置:
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]

    • iOS 也可以调用反注册代码进行关闭:
      [[UIApplication sharedApplication] unregisterForRemoteNotifications];
      • iOS 9 设备使用代码反注册 APNs ,再调用代码注册 APNs ,需要杀死应用后,再重新开启应用才会有 APNs 提示(这里可能与系统本身 bug 有关)。
  • 可能需要了解的内容:消息的生命周期,离线消息



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



1赞
JPush 常见问题目录
iOS 推送退出账号后 依然可以收到推送
未登录状态,唤醒用户消息通知,如果一个账号在多个手机上登陆,一个手机又多个账号登陆,通知是发到哪?用户在哪看到消息通知?
换手机登录账号,原手机收到推送消息,新手机下载app使用 收不到推送消息
关于极光推送的数据问题
极光推送如何发送给某个app
推送消息
极光 前台 后台服务器之间的处理
Android极光推送切换用户时怎么解除别名绑定
问个小问题,关于推送的
JPush能否实现2个客户端登陆时强制下线第一个客户端的功能
Alias length is no more than 40!
极光推送的离线消息(默认1天)到底是什么含义?
推送实现个推功能是否要设置别名
极光推送的场景应用
设置别名和 tags 总返回6002(每设置失败 8s 后再发请求)
iOS10及以上版本,用户登录状态接收推送,退出就不接受推送怎么处理,谢谢
ios 推送国际化的问题。
根据用户id推送通知到安卓App
根据用户id推送通知到安卓App
app混合开发集成极光推送
app退出停止极光推送问题
根据tag 推送时,tag不存在时报错,无具体报错报错只有一个{} 没有具体信息,附上错误信息
用了你们官网的demo出现问题要咨询
关于非原生的app推送问题
用registrationId推送和别名推送哪个好
回复评论推送和指定用户群体推送
极光推送标签问题
求助:如何使用python编程来获取到registration_id的列表?
Jpush android 可以接收通知,IOS 接收不到
极光im怎么给全部用户发送消息?
ios的RegisterId解绑问题
请问服务器根据tag推送是否还需要加上registrationId?
{"msg_id":2251813087582844,"sendno":498637499,"statusCode":0}
android切换账号导致收不到推送
Android jpush先删除别名,在设置别名。返回错误码6022,设置别名失败
关于Alias和tag的问题
关于Alias和tag的问题
紧急紧急,1011,极光推送报错
紧急紧急,1011,极光推送报错
rest API 下的 push Api方法 只推送给安卓用户
rest API 下的 push Api方法 只推送给安卓用户
Android向指定用户推送
iOS11 生产环境接收不到静默推送
关于给指定用户推送消息的问题
使用设备id推送没有问题,设置别名出错
请问怎样将注销~登录的这段时间里的推送消息保留为离线,登录后再收到这段时间的推送?
是用registrationId推送比较好还是别名比较好
关于多终端推送问题
极光推送能按照某一条件实时推送吗?比如:订单的物流信息
从简单的测试中了解极光推送可以实现的效果
关于PHP往APP上推送的问题 第一次使用
同一个设备,更新别名后,无法推送
极光支持一条push根据APP设置语言做不同配置的吗?
一台设备登陆过多个账号,以账号作为别名,后台推送后收到多个账号的推送
一台设备登陆过多个账号,以账号作为别名,后台推送后收到多个账号的推送

如何开通 VIP 服务,VIP 服务与免费服务有什么区别


1、免费与付费用户的区别:JPush 功能对比

  • 免费用户可以使用基本的推送服务,不会被强制收费。

  • 由于极光所有的免费用户共享免费通道和推送速度(二十万条/秒),所以在推送高峰期,免费用户会存在消息延迟可能,延迟时间根据高峰情况波动。

  • VIP 用户使用的单独的专用通道,不受其他人推送的影响,所以不会受高峰期影响导致延迟。

  • 文档中标注为 VIP 专属接口的 API 只提供给 VIP 客户,包括:

    • 消息统计:针对一条消息 (一个 MessageID)的完整统计数据。
    • 用户统计:近 2 个月内某时间段的:新增、在线、活跃用户数据。
    • 获取用户在线状态:可查询近 10 分钟内是否在线、最后上线时间。
    • 管理员 API :可实现创建、删除 App,上传证书。
  • 其他说明:

    • VIP 客户技术支持是一对一 24 小时服务,负责您公司的极光客户经理会为你们创建专门的群进行相关支持服务,紧急情况可直接与客户经理电话联系。

    • 免费用户技术支持由于对接的用户很多,不保证及时的支持服务,请在咨询后耐心等待,建议优先在社区搜索问题。

    • Android 厂商通道(小米、华为、魅族、Google FCM、OPPO、vivo)仅提供给 VIP 客户。

    • 消息推送总数没有限制,但对推送频率有限制(600次每分钟),VIP 用户拥有更高的频率上限,阅读 API 调用频率限制文档

    • 远程定时任务,免费用户当前未过期的任务总数不能超过 100 个,VIP 用户可以申请提高上限,最高可达 2000。

    • JPush 短信补充服务,需要开通短信 VIP ,可自行充值短信条数

    • VIP 客户可以提出定制需求,需求通过产品评估后将实现,可提供定制版客户端 SDK ,服务端功能。

    • VIP 客户支持子账号功能,母账号可以给子账号分配官网各项信息的查看和使用权限。

    • 私有云客户可以在企业内部实现推送服务,相关数据均保存在企业内部。

    • 私有云客户可以定制 PC 客户端 & PC Web 推送。

2、付费相关的业务均需要与极光商务联系,商务将安排具体的客户经理与您联系,只有客户经理有权报价。

  • QQ 公众号:800024881 ( Mac 版本的 QQ 上没有公众号这个功能,请使用其他版本 QQ 联系)

  • 电话:400-888-2376(电话若没有人接听,客服可能因会议等原因离开了工位,请等待一下重拨)

  • 邮箱:sales@jpush.cn

  • 网站登记信息后,会有人联系,可点此填写

  • 其他渠道:可以在社区私信我、在开发者群可联系 JPush QQ 1206559424、发邮件给 support@jpush.cn

  • 为便于迅速进行登记与联系,请提供如下信息:

    • 公司名称:

    • 地区(我们是分区域进行联系的,如果是有总公司、分公司,那么提供您将会付费的公司所在区域):

    • 您贵姓:× 先生/女士

    • 联系方式(为迅速联系,请提供您的电话,若愿意,还可以提供您的 QQ 或者微信):

    • 您的需求(所需开通的服务,需要咨询的内容):

    • 您的应用是什么类型的,有没有上线,应用的 Appkey:



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



通知栏右侧大图如何实现


iOS

Android

  • 从 JPush Android SDK v3.1.7 开始支持

  • REST API 在 Notification - Android 新增字段 large_icon 支持该功能

  • large_icon 传网络图片时,不能超过 30k;传本地资源路径时,只需要填文件名称,不需要任何前缀后缀

  • Android 的大图标大部分情况下显示在通知栏消息右侧,有可能在左侧显示,这与设备系统有关

  • 效果:
    screenshot-16
    screenshot-4



如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



Error code 1004

备注:其他错误码列表 Android 点我;iOS 点我;服务端 点我


该错误在调用 REST API 时出现,代表验证失败,请看:调用验证说明

排查方案:

  • 检查 Appkey 与 MasterSecret,是否多了空格,是否传反了。

  • Appkey 与 MasterSecret 在应用详情里
    image

  • 是否无意间重置了官网的 MasterSecret

  • 生成算法是否弄错,正确写法:base64_auth_string 的生成算法为:base64(appKey:masterSecret)

  • 注意是否少了 Basic ,示例:

Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==

如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



Undefined symbols for architecture i386


iOS 若编译报错 Undefined symbols for architecture i386 是因为 3.0.0 及以上版本 JPush SDK 将不再支持处理器为 i386 的模拟器,支持真机,处理办法请阅读:

1、 xcode8.1 iOS模拟器运行编译报错

2、 iOS导入3.0.7版本SDK,模拟器运行报Undefined symbols for architecture i386:

如果是使用 ionic 请使用这个命令:

ionic cordova build ios --device

如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ



iOS 通知送达数


推送历史 - 消息详情 - iOS 送达数是新增的一个统计项,需要实现上报才能展示。

  1. 定义:送达到设备并展示出来的通知数量,与 “iOS 成功数” 区别在于是否真实送达到了设备上。
    (iOS 成功数代表消息成功发至了 Apple 服务器,等待 Apple 服务器的下发)

  2. 上报条件

    • iOS 10 设备,集成 3.0.7 及以上版本的 iOS SDK

    • 借助 Service Extension 进行上报,推送消息时必须勾选 “可选设置”中 mutable-content 选项(调用 API 请设置 Notification → iOS → mutable-content 字段为 true)

  3. 功能实现方法:文档,建议参考 JPush SDK 包中的 example。

    • 将 jpush-extension-ios-xxx.a 和 JPushNotificationExtensionService.h 两个文件引入到您的 Service Extentsion 工程中。
    • 添加 Framework:libz.tbd 和 libresolv.tbd。
    • 调用 [jpushSetAppkey:] 方法设置您的 appkey,请注意这里的 appkey 应该和您极光应用的 appkey 相同。
    • 调用 [jpushReceiveNotificationRequest:] 方法上报您的 apns 消息,完成送达统计;在该方法的 block 回调中进行 apns 的显示。

附加问题:

集成 3.0.7 及以上版本的 iOS SDK 运行后报如下错误, jpush-extension-ios-xxx.a 与 jcore-ios-xxx.a 冲突

ld: warning: object file (/Users/rongyao/huangyq/48_sha/xwolves48/Program/client/frameworks/runtime-src/proj.ios_mac/Lib/jpush-extension-ios-1.1.1.a(JPushExtensionTCPSocket.o)) was built for newer iOS version (10.0) than being linked (8.0)
ld: warning: object file (/Users/rongyao/huangyq/48_sha/xwolves48/Program/client/frameworks/runtime-src/proj.ios_mac/Lib/jpush-extension-ios-1.1.1.a(JPushExtensionSRVResolver.o)) was built for newer iOS version (10.0) than being linked (8.0)
duplicate symbol __sisHostDomains in:
    /Users/rongyao/huangyq/48_sha/xwolves48/Program/client/frameworks/runtime-src/proj.ios_mac/Lib/jpush-extension-ios-1.1.1.a(JPushExtensionSession.o)
    /Users/rongyao/huangyq/48_sha/xwolves48/Program/client/frameworks/runtime-src/proj.ios_mac/Lib/jcore-ios-1.2.0.a(JPUSHAddressController.o)
ld: 1 duplicate symbol for architecture armv7

这代表你们没有按照要求将 extension 的文件引入到 Service Extentsion 工程中,而是放在了主工程。

请务必参考 demo 配置,如下图,如果你不需要上报通知送达数,则可以删除 extension 相关的文件。
image


如果对你有帮助,点个赞 :sparkling_heart: 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ