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

标签: #<Tag:0x00007f657cd6c9f8>

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


如何推送

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

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使用 收不到推送消息
关于极光推送的数据问题
Android极光推送切换用户时怎么解除别名绑定
问个小问题,关于推送的
iOS11 生产环境接收不到静默推送
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推送和别名推送哪个好
一台设备登陆过多个账号,以账号作为别名,后台推送后收到多个账号的推送
回复评论推送和指定用户群体推送
一台设备登陆过多个账号,以账号作为别名,后台推送后收到多个账号的推送
极光支持一条push根据APP设置语言做不同配置的吗?
极光推送标签问题
同一个设备,更新别名后,无法推送
关于PHP往APP上推送的问题 第一次使用
从简单的测试中了解极光推送可以实现的效果
求助:如何使用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,极光推送报错
关于多终端推送问题
是用registrationId推送比较好还是别名比较好
请问怎样将注销~登录的这段时间里的推送消息保留为离线,登录后再收到这段时间的推送?
rest API 下的 push Api方法 只推送给安卓用户
rest API 下的 push Api方法 只推送给安卓用户
Android向指定用户推送
使用设备id推送没有问题,设置别名出错
极光推送如何发送给某个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% 的问题 (ノ◕ω◕)ノଘ_ଘ



点击数上报


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



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


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

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

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

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

参考:


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

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



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


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

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

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

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

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

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

    • 当显示已验证时代表推送证书正常可用。
    • 显示已注销或者已过期时,请去 Apple 平台重新生成证书上传到极光官网,配置指南
  7. 证书上传成功后,是否可以修改 BundleID 重新上传证书?
    A. 不行,如果有强烈需求,发邮件给 support@jiguang.cn 申请,相关说明阅读本帖 常见问题 - JPush 合集(持续更新)


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

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



官网推送正常收到,调 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 消息不会展示。

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

    • 检查是否 API 推送时的调用地址,是否写成了推送校验 API (https://api.jpush.cn/v3/push/validate)

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

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


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

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



用平台发送推送android可以收到,api方式发送收不到;
IOS 无法收到消息推送 但查询发送api是有发送记录的,目标0 。另外安卓是可以收到推送的
iOS 生产环境收不到推送呢?通过极光web端给手机生产环境可以收到,手机给手机发送收不到
IOS 端极光推送已获取Reg.ID,但是手机上没有收到通知
后端接入 JPush,客户端未收到
后端接入 JPush,客户端未收到
ios 推送在生产环境推送收不到,开发环境收得到。
使用标签推送时 报错cannot find user by this audience
iOS极光推送,接收不到推送消息
IOS API推送为什么收不到消息
服务端推送返回成功,但是官网看不到推送历史,并且APP也没有收到
生产, iOS app 用户未收到推送
更新极光推送3.3.6之后出现问题
ios 结束进程后无法接收推送的消息数据,求解!
Java服务器端推送IOS失败
iOS 推送收不到,在推送历史记录里面显示推送成功,但实际没有收到消息
android收不到api发送的通知
iOS10+推送图片问题
各位朋友好,请问将试用的极光推送升级成收费了的,IOS和安卓需要改什么呢,目前都收不到信息了?
极光控制台发送的IOS手机可以收到,接口调用的push消息手机收不到,接口调用返回成功,msg_id 是440597552
极光推送 api推送 安卓接收成功 但是IOS没有收到消息
Ad-hoc打包下无法收到推送
iOS 生产环境收不到推送呢?通过极光web端给手机生产环境可以收到,手机给手机发送收不到
关于极光推送生产环境开发环境的问题
服务端和官方推送都成功了,官方推送有信息,调用api成功但没有信息,这都会是哪些原因?
将用户名同时设置成android和ios别名
iOS 打包 自己app后台发送的通知收不到,但是极光推送的官网可以收到。
极光api返回成功但是app收不到(极光后台的推送可以收到)
我这边自动集成的方式添加极光推送,发送通知,自定义通知都能收到,但是后台触发的收不到,我是自定义设置的 下面是Android自定义代码,对后台参数有啥要求吗,比如json串必须传那个参数
api推送 安卓收到通知,IOS手机收不到
推送消息,客户端收不到
ios 用web平台测试能收到推送,但是api推的的时候收不到
关于android推送通知栏显示问题
为什么我用后台发能收到,api发就收不到呢?
ios 后台web推送注册ID能收到消息 但是用api推送收不到
使用Push API v3 以registration_id 发送通知 目标为0 大佬帮忙看下
ios开发 开发环境下能正常收到推送,adhoc打包后无法收到推送
别名推送通知,极光后台推送和api推送用别名方式都不可以,安卓可以收到。
iOS收不到api自定义消息,目标0接收0
推送设置成功,线上测试成功,后台推送消息收不到,是什么问题
发送消息的时候推送失败,返回状态是0
勾选将生产证书用于开发环境 "是", 生产环境收不到推送
IOS生产环境收不到API的推送

推送历史的数据展示问题


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

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

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

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

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

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

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

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


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

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



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


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

关于 LBS 信息的上报:

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

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

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

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


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

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



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


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

使用流程:

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

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

其他相关:

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

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


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

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



Execution failed for task ‘:app:processDebugManifest’


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

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

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

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


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

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



如何推送 emoji 表情


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


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

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

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


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

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



1赞