推送通知突然不行,不管是别名还是标签


(liehuo) #1

这两天不管是别名推送还是标签推送都不行了。。使用php 的api来推送就不行。我在极光的开发者服务进行测试推送是可以的。。php的api代码我没改动过,,无缘无故就不行了。?请问什么原因。。

我测试后台接口,报错是:网站无法访问.?


(liehuo) #2

极光服务器昨天和今天是不是不行了。。?所有的推送通知都不行了。。。还是说创建的应用是有使用期限的,过期了就不行?是安卓的。、。、


#3

1、应用没有有效期这个说法
2、我在官网测试推送没有问题。

3、推送异常提问

  • 推送请求失败, JPush 会以异常抛出,捕获异常( try catch )可获得 JPush 返回的错误信息,如:
{"msg_id": 699616375, 
 "error": {
     "message": "cannot find user by this audience", "code": 1011
   }
};

根据异常 Message 和 code 内容在列表中找到对应说明进行排查问题,并可在社区搜索报错,大部分都有更完整的排查步骤。

  • 推送请求成功,而你们认为客户端没有收到

  • 请优先根据总结自行排查一下
    Android 收不到消息排查
    iOS 收不到消息排查

  • 排查无果,需要官方协助查询,请说明你根据排查步骤已确认有哪些信息是正确的,并务必提供如下两个信息,缺一不可:

    • Message ID(调用 API 请求成功后会返回 msgid ,官网 - 推送历史 - 操作 - i 详情里面也可以查看该信息,如果查不到历史请注意筛选条件,历史只保存 30 天)
    • 测试设备的 registrationID(不管是广播、别名、标签还是其他方式推送,均必须提供该信息),该信息只能在客户端调 API 获取,服务端无法取到,服务端若需存储请让客户端获取后上传 。
      iOS 的 registrationID 获取方法点我
      Android 的 registrationID 获取方法点我

(liehuo) #4

我api推送的消息,在推送历史上看不到。。如果用极光的开发平台测试推送,是可以收到推送的,并且推送历史上能看到。。。这种情况会是什么原因呢?


#5

1、请一个问题一个问题的解决,请你首先提供「收不到消息」的排查信息,官网看不见历史,你API 推送也会给你返回msgid,并不影响信息的提供。

2、可能原因之一:你没有做筛选,筛选条件,web表示官网推送,api表示调 API 推送,通知和自定义消息也需要根据情况进行选择。

3、可能原因之二,域名问题: 常见问题 - JPush 合集(持续更新)


(liehuo) #6

刚才我新建了一个新的应用,包名也换了。。我在客户端是能获取别名,标签,registrationID。在极光开发中心也能发送推送通知,但是就是不能api推送消息,,msgid 是null。。。这是为什么?


#7

给出你们调 API 推送的详细的代码和参数。msgid 为 null 说明你实际并没有请求到极光服务器上去,否则必然有信息返回。看有没有除了msgid之外的错误信息。


(liehuo) #8
depment_id=200036_9088
ticket_no=T201803080009
add=TEST
type=4
ground=1 

function tuisong($depment_id,$ticket_no,$type,$add,$ground){
    ini_set("display_errors", "On");
    error_reporting(E_ALL | E_STRICT);
    vendor('JPush.JPush');
    $br = '<br/>';
    $app_key = '****************************';
    $master_secret = '****************************';
    $client = new JPush($app_key, $master_secret);
    if($ground=='1'){//创建一个新工单的时候推送
    	if($type=='4'){
        $str='Hi,'.$add.' Get a New Ticket';
	    }
	    // var_dump($client);
	    $result = $client->push()
	    ->setPlatform('android')
	    // ->addAlias($engineer_id)
	    ->addTag(array($depment_id))
	    // ->setNotificationAlert('Hi, JPush')
	    ->addAndroidNotification($ticket_no, $str, 1, array("key1"=>"value1", "key2"=>"value2"))
	    // ->setMessage("msg content", 'msg title', 'type', array("key1"=>"value1", "key2"=>"value2"))
	    ->setOptions(100000, 3600, null, false)
	    ->send();
	    return  json_encode($result);
    }
}

返回的$result是空的。。。
如果我直接访问在浏览器上访问这个方法:
返回的就是:


#9

不能直接在浏览器上访问,必须做调用验证,使用postman或者curl工具。

你用了什么语言的SDK?参考该SDK的example文件


(liehuo) #10

我用的是php,。,。。极光推送的服务器地址是多少?我用curl访问看看能不能通过


#11

API 地址:https://api.jpush.cn/v3/push
记得需要做调用验证。

PHP example 参考:


(liehuo) #12

经测试是可以访问你们服务器的,,都能返回来信息。
我照着推送样例照搬进去返回的消息也是null。。。

能不能发我个jpush包。。

是不是我这个有效期过了。。?
真的搞不懂啥原因了。,。包名啥都换了。。官网上又可以推送成功,registrationID也能拿到。推送连接状态返回的是已连接。。就是api推送不成功。。那只能是这个包了。。


#13

截图中的报错说明 是你的请求不是 POST 的:
1001 只支持 HTTP Post 方法 不支持 Get 方法。

你PHP SDK 什么版本的?

https://github.com/jpush/jpush-api-php-client

根据这里的readme说明更新 SDK ,可以在release 页面下载源代码包。


(liehuo) #14

我得php sdk版本是jpush-api-php-client-3这个。刚才我把你的发给我的包弄进去了,还是同样的问题。

https://api.jpush.cn/v3/push这个地址你要post请求。。。需要我传什么参数?
curl -d “param1=value1&param2=value2” "https://api.jpush.cn/v3/push 。。。我这样写是认证失败的。


#15

这个是什么版本?


(liehuo) #16

应该是jpush-api-php-client-3.5.1。。。问题我现在换成你们发我的包也是不行。。。
https://api.jpush.cn/v3/push 这个地址你们说要post请求。。。

需要我传什么参数吗?


#17

官方文档里面就是 Curl 的示例,自己去看看
https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/


(liehuo) #18

总结一下:已经找出问题了。
首先我在自己本地地址访问,是可以有推送消息的,至少在官方开发者平台历史消息能看到。


但是我服务器去访问这个方法的话,就会报错。说连接被重置。并且官方开发者平台历史通知消息无法显示。没有任何返回值。

之后就用curl访问官方推送平台地址:

https://api.jpush.cn/v3/push
curl --insecure -X POST -v https://api.jpush.cn/v3/push -H "Content-Type: application/json" -u "改成了自己AppKey:改成了自己Master Secret" -d '{"platform":"all","audience":"all","notification":{"alert":"Hi,JPush !","android":{"extras":{"android-key1":"android-value1"}},"ios":{"sound":"sound.caf","badge":"+1","extras":{"ios-key1":"ios-value1"}}}}'

-------测试结果是200.。也就是成功的。

在这之前,推送方法没有任何改动,就昨晚到今天一整天,只要服务器上执行推送方法,就报错,提示就是链接被重置。

我们的服务器是在香港,这两天并没有做什么限制或改动,不知道官方是否有什么操作?
现在导致几个项目的推送方法都不能被调用。还请官方给出解决方案?谢谢
所使用sdk是jpush-api-php-client-3.5.1。。。


#19

你们服务器有没有host绑定什么 IP 地址?

在你的服务器上做如下操作,提供信息给我们。并提供你的AppKey。

  • nsloookup 域名
  • ping 域名
  • mtr 域名
  • tracepath 或者 traceroute 域名
  • telnet 域名 端口

(liehuo) #20

我们服务器host没有绑定任何ip地址。
我们服务器ip地址:223.197.92.128:9088。
appkey:dfcb014010df683e1ff35c25。

你说的域名,是指你们的域名吗?在我的服务器ping自己的域名没意义吧。。