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

问题汇总
标签: #<Tag:0x00007fb8338f7eb8>

#39

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


如何推送

  • 添加扩展字段 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
iOS 通知消息。v3.1.0极光版本
求助:极光推送APIRequestException
PHP 发送自定义消息 前端收不到 extras 键值
push api 问题请教
发送数据,显示内容的问题
ios 推送的时候如何传参?
在应用未启动状态下,发送一条消息,IOS 的APNs通知能够接到,打开应用之后,还会不会接到Jpush推送的离线消息?
关于极光推送服务器端推送的一个问题
如何实现收到消息的同时收到一个 URL
ios 发送消息怎么加入一些参数,用来处理推送的界面跳转
JPush 常见问题目录
可以接收自定义消息,但接收不到JPushInterface.EXTRA_MESSAGE)
android只能接收到内容 接收不到标题
android获取推送通知,在线等
api发送通知1009
andorid推送设置了附加字段在测试包可以接受到,正式包貌似无作用?
java SDK如何发送图片链接呢?或者富文本图片
极光推送提示app_key format is error
怎么样通过点击的通知获取对应的自定义消息
#40

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% 的问题 (ノ◕ω◕)ノଘ_ଘ




只能看到标题,看不到内容
ios 推送 自定义标题的问题
从简单的测试中了解极光推送可以实现的效果
请问极光推送服务端sdk发送消息时能指定发到android还是ios吗?
极光推送ios 通知
使用PHP SDK 请求推送接口,IOS 怎么设置显示标题?
JPush 常见问题目录
java sdk imageAbsoluteString字段
#41

如何使通知消息换行展示


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% 的问题 (ノ◕ω◕)ノଘ_ଘ




JPush 常见问题目录
从简单的测试中了解极光推送可以实现的效果
推送的通知栏样式
手机收到的推送不能累积
#42

Error code 6009

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


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

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

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

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



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

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




JPush 常见问题目录
#43

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% 的问题 (ノ◕ω◕)ノଘ_ଘ




极光推送经常出现1003错误是什么问题
JPush 常见问题目录
经常报time_to_live value should be a non-negative integer这个错,请问下是什么原因?
JAVA后台进行推送时出现1003,但是相关参数已经设置
ios推送,web推送的通知能收到,api推送的收不到
推送提示 1003(Audience value is invalid)
推送提示 1003(Audience value is invalid)
推送消息一直提示参数不合法
#44

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


前提条件:客户端已安装了一个集成了极光 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 :AndroidiOS 设置为该 App 的别名;对一些多用户集合性质的分类,就设置为标签,譬如某些用户都喜欢了「周杰伦」,将「周杰伦」三个字作为标签给这些用户设置,当你对「周杰伦」这个标签推送时,他们都会收到。

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

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

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

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

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

    • 希望 A 手机不再收到消息,那么应该在自己的后台判断出 A 用户“ 换了设备登录” ,让 A 手机自动做登出操作,在客户端置空别名
  • 如果用户直接杀死 A 手机的 App,在 B 手机登录,登出信息无法及时送达到 A 手机上。

  • 需要注意:别名删除后 至 重设别名 期间,推送的消息, 在重设别名后,设备不会收到。

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

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

  • 注意:对别名标签的操作并不影响广播推送的消息和对 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% 的问题 (ノ◕ω◕)ノଘ_ଘ




JPush 常见问题目录
iOS 推送退出账号后 依然可以收到推送
换手机登录账号,原手机收到推送消息,新手机下载app使用 收不到推送消息
未登录状态,唤醒用户消息通知,如果一个账号在多个手机上登陆,一个手机又多个账号登陆,通知是发到哪?用户在哪看到消息通知?
关于极光推送的数据问题
推送实现个推功能是否要设置别名
极光推送的场景应用
设置别名和 tags 总返回6002(每设置失败 8s 后再发请求)
极光推送能按照某一条件实时推送吗?比如:订单的物流信息
iOS10及以上版本,用户登录状态接收推送,退出就不接受推送怎么处理,谢谢
ios 推送国际化的问题。
根据用户id推送通知到安卓App
根据用户id推送通知到安卓App
关于多终端推送问题
app混合开发集成极光推送
app退出停止极光推送问题
根据tag 推送时,tag不存在时报错,无具体报错报错只有一个{} 没有具体信息,附上错误信息
用了你们官网的demo出现问题要咨询
关于非原生的app推送问题
使用设备id推送没有问题,设置别名出错
是用registrationId推送比较好还是别名比较好
用registrationId推送和别名推送哪个好
回复评论推送和指定用户群体推送
极光推送标签问题
请问怎样将注销~登录的这段时间里的推送消息保留为离线,登录后再收到这段时间的推送?
同一个设备,更新别名后,无法推送
关于PHP往APP上推送的问题 第一次使用
从简单的测试中了解极光推送可以实现的效果
推送消息
极光 前台 后台服务器之间的处理
Android极光推送切换用户时怎么解除别名绑定
问个小问题,关于推送的
JPush能否实现2个客户端登陆时强制下线第一个客户端的功能
Alias length is no more than 40!
极光推送的离线消息(默认1天)到底是什么含义?
#45

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 邮箱:sales@jpush.cn

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

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

    • 公司名称:

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

    • 您贵姓:× 先生/女士

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

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

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



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

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




厂商通道收费吗?
第三方系统收不到推送的消息,现在我用了Firebase,怎样能让JPush能推送到第三方?
C# SDK 能不能实现消息实时监听
极光推送开发证书能收到推送但生产证书收不到推送
API 调用频率控制
极光推送给离线设备推送消息后,设备在几个小时后连上网络了,为什么没有收到消息?
JPush 常见问题目录
苹果手机推送目标和成功的数量都是0
【jpush】请问自定义目标出现0是怎么回事呢
#46

通知栏右侧大图如何实现


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% 的问题 (ノ◕ω◕)ノଘ_ଘ




adnroid 右侧 图标 抖音 效果
#47

Error code 1004

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


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

排查方案:

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

  • Appkey 与 MasterSecret 在应用详情里
    image

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

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


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

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




#48

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% 的问题 (ノ◕ω◕)ノଘ_ଘ




#49

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% 的问题 (ノ◕ω◕)ノଘ_ଘ




#50

点击数上报


  1. 定义:用户通过点击通知栏消息进入应用的次数。

  2. 对于 Android 应用,需要实现了统计分析 API 才有这个统计数据。

    • API - reportNotificationOpened 用于上报用户的通知栏被打开。
  3. iOS 通知消息的获取方法中,[JPUSHService handleRemoteNotification:userInfo];用来上报

    • iOS SDK 的初始化位置会影响点击的成功上报,如果没有正确配置,log 中会打印:
      W - [JIGUANGService] 请将JPush的初始化方法,添加到[UIApplication application: didFinishLaunchingWithOptions:]方法中,否则JPush将不能准确的统计到通知的点击数量。
  4. 上报成功后会在推送历史 - 详情 - 点击、自定义点击中展示数据。


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

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




#51

Android 如何区分正式和测试环境


  1. 使用相同的 Appkey 和 包名,推送时使用 registrationID、tag、alias 针对性的对测试机进行推送测试

  2. 如果一定要测试广播推送,那么在官网新建一个测试应用,Appkey 和包名不一样,专门用作测试

  3. 如果你还需要包名一样并测试广播推送,那么在官网新建一个极光账号,新建一个测试应用,配相同的包名进行测试。

说明:实际上采用第一个方案即可,广播推送和其他方案推送本质上没有区别。

参考:


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

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




#52

官网推送证书配置常见疑问(过期,有效期,证书状态等)


  1. 官网推送证书过期,更新后是否需要打包 App 重新上架?
    A. 不需要。

  2. 官网推送证书的有效期是否可以设置?
    A. 不能,该有效期是 Apple 决定的,自生成起有效期 1 年。

  3. 是否有不过期的鉴权方式?
    A. 有,建议使用 Token Authentication 配置,文档阅读鉴权方式二

  4. 官网推送设置 - iOS 鉴权方式是否需要同时配置?
    A. 不需要,二选一即可,如果都配置了,极光也会根据你选择的鉴权方式去做鉴权

    • 因此如果你以前配置的证书鉴权过期了,可以直接换成 Token Authentication 配置,过期证书不会再影响鉴权
  5. 证书配置 - 是否将生产证书用于开发环境 选项有什么作用?
    A. Apple 的生产推送证书允许用于开发环境的推送,勾选将生产证书用于开发环境,开发者可以仅上传生产证书,即可在官网推送平台处选择开发环境做推送,不用再生成和上传开发证书。

    • 因此如果你上传的开发证书过期了,而生产证书没有,则可以直接勾选该选项,不需要重新更新开发证书。
  6. APNS 证书文件的状态
    A. 点开 APNS 证书文件后的问号可以看到解释说明,该问号展开的内容仅是解释说明,实际状态如图
    image

    • 当显示已验证时代表推送证书正常可用。

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

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




#53

官网推送正常收到,调 API 推送收不到,或反之


说明:其中之一推送可以正常收到,代表客户端集成没有问题。

排查方案:

  1. 对比 web 与 API 推送历史 - 详情中的推送内容的区别,常见情形如下:

    • iOS 环境不一致问题:API 推送消息给 iOS,需要设置 apns_production 指定推送的环境,false 为开发,true 为生产。

      • 消息详情中,推送平台 ios 代表开发,ios-product 代表生产,还可以从 options →"apns_production 字段的值来辨别。

      • 如果 API 推送传的是 true,但消息详情中却显示的 false(官网详情显示的内容是实际传递给极光的值),那么需要检查 API 推送的代码,是否有覆盖、引用、修改的代码和实际调用的代码不一致等问题

    • Appkey 不一致:官网在应用设置中查看 Appkey,调 API 推送在调用验证处查看所传 Appkey,客户端配置的 Appkey 会在 log 中打印出来。推送使用的 Appkey 必须和客户端配置的一致。

    • 推送目标不一样:例如官网是给 registrationID 推送 / 广播推送,API 是给别名推送

    • 没有给 Android 或者 iOS 传值:推送的有效目标只有 iOS 设备,但 Notification 中只给 Android 传参,则 iOS 肯定收不到,或反之。

    • alert 为空(通知内容为空):若该字段为空,则 Notification 消息不会展示。

    • 其中一个推送的是自定义消息:自定义消息默认不展示,阅读本帖

  2. 提供收不到消息的设备的 registrationID 和推送的消息的 MessageID(收到的和未收到的)给官方人员查询。

  • Message ID(调用 API 请求成功后会返回 msgid ,官网 - 推送历史 - 操作 - i 详情里面也可以查看该信息,如果查不到历史请注意筛选条件,历史只保存 30 天)


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

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




#54

推送历史的数据展示问题


  1. 如果调 API 同时推送了 Notification (通知)和 Message (自定义消息),则这条消息会被分类在通知,不影响消息下发。

  2. iOS 自定义消息的目标和送达数需要展开消息详情查看「自定义目标」「自定义送达」

    • iOS 的 apns 通知(Apple 服务器)和自定义消息 Message(极光服务器)是走的不同的通道下发的,所以在官网-推送历史-详情里面 iOS 的数据分了两种

    • 目标|成功|送达|点击 是 Notification 通知的数据
      自定义目标|自定义送达 是 Message 自定义消息的数据

  3. iOS 送达数相关,阅读本帖

  4. 点击数相关,阅读本帖

  5. 推送列表中爆红的消息代表是失败的,展开消息详情可以看到具体错误提示,根据错误码处理问题

  6. 官网的推送历史永久保存,可以手动删除;API 推送的历史不可删除,仅保留 30 天。


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

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




#55

分群功能 / 地理位置的上报


使用分群功能:控制台配置文档,推送时在 audience 指定,文档

关于 LBS 信息的上报:

  • 频次:SDK 自动上报,1小时一次

  • Android 必须在 Androidmanifest 里面加上 定位权限(location 相关的),可以调用 requestPermission 来兼容 Android 6.0 以上动态权限 ,并在安装后允许定位。测试时可以尝试 开启 GPS,不开启 GPS 极光也会通过网络信息所在地 获取地理位置

  • iOS 需要调地理位置上报的 API 进行位置上报,或者开发者写申请「地理位置」权限的代码,然后安装启动时就会弹框出来问是否允许应用获取地理位置,允许后极光 SDK 才会采集地理位置信息。

新增用户的地理位置获取的是 IP 地址,与电话卡的所属地有关系


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

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




#56

分组推送(同时推送给多个 App)


使用场景: 多个渠道上架且包名不同,但实际应用与用户均一致,在极光创建了多个 App,需要批量推送信息。

使用流程:

  • 先在控制台对应用进行分组(配置文档),一个分组内的应用上限是 100 ,在分组信息中获得 GroupKey 信息。

  • 调用分组推送 API文档)推送消息,除了调用地址和鉴权 key 不同外,在其他字段上和一般的推送没有区别。

其他相关:

  • 创建定时任务的 API 不支持分组推送,但在官网分组推送支持选择定时。

  • 官网功能的做法是 :如果一个应用分组里有 5 个应用 ,那 portal 的处理就是推 5 次, 对每个应用都推一次,相当于对每个应用创建一个定时任务。


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

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




#57

Execution failed for task ‘:app:processDebugManifest’


  • 打开应用的 AndroidManifest.xml 然后在左下角切换到 merged manifest 视图,可以看到合并 manifest 时的错误

  • 根据错误说明检查是否缺少某个权限、重复配置权限等,参照 demo 中的 Androidmanifest 配置

  • 自动集成不需要再手动配置权限,请着重注意,以免出现重复配置报错

  • 可以把这个错误提供给官方进行分析。


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

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




#58

如何推送 emoji 表情


  1. 有一个 emoji 网站,可以 copy emoji 文本,复制粘贴到官网控制台或者调 API 推送的内容里面都是可行的。


  2. 调 API 推送时传类似于 \uD83D\uDE00 或 \ud83e\udd70 的字符,客户端收到后也会默认展示为表情。如
    表情对应的各类型的 code 参考:网站1网站2
    image

  3. 乱码的解决办法,参考文章:
    https://blog.csdn.net/mochong/article/details/67636661

  4. 客户端处理表情,参考文章:
    https://www.jianshu.com/p/7c2d8d56f061


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

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