Closed zhanghuid closed 2 years ago
图片中的提示信息是,deviceToken错误。这里的信息是apple直接返回的,说明在苹果那里这个deviceToken是不存在的。
意思是说,在 由 pushdeer-自架版,上报的device_id
是错误的?
导致,在通过 gorush 发送时,传入的 deviceToken 不对?
麻烦告诉一下,如何获取 正确的 deviceToken 呢?
意思是说,在 由 pushdeer-自架版,上报的device_id 是错误的?
导致,在通过 gorush 发送时,传入的 deviceToken 不对?
deviceToken 可以通过 api 获取 https://github.com/easychen/pushdeer#%E8%AE%BE%E5%A4%87%E5%88%97%E8%A1%A8 ,你通过数据库查看也可以。
但 deviceToken 在应用重装以后会变。 另外也可能是证书(有两个,一个app一个clip)和deviceToken不匹配。
deviceToken 我全试了一遍,都不得行
证书:c.p12,不是直接用 ios 目录下的么,也是不得行,命令如下:
deviceToken 我全试了一遍,都不得行
证书:c.p12,不是直接用 ios 目录下的么,也是不得行,命令如下:
你这证书明明用的是 cc.p12 啊 🤣
不好意思,刚刚穷举了所有的情况,下面是 c.p12的
不好意思,刚刚穷举了所有的情况,下面是 c.p12的
你用的topic 是pushdeer官方版的,要换成自架版 https://github.com/easychen/pushdeer/blob/a9ec7adfb09d6b4daa0022f728af70af45699c10/doc/%E8%B0%83%E8%AF%95%E6%96%87%E6%A1%A3.md#end-point-%E8%BF%9E%E9%80%9A%E6%80%A7%E6%B5%8B%E8%AF%95
topic: com.pushdeer.self.ios 嗯,都试过了,都是一样的错:
topic: com.pushdeer.self.ios 嗯,都试过了,都是一样的错:
我刚才自己架设了一个测试,自架版api接口推送是能用的。如果你确认所有参数和证书都正确,那么可能需要查看 gorush ( https://github.com/appleboy/gorush ) 文档,或者给他们提交issue 了。
我在黑苹果上拉gorush源码构建镜像,使用pm2 进行进程管理,启动clip+ios,很神奇的发现clip能发,ios不能发,查看日志发现发送到ios后,ios的gorush转发到clip了,导致clip找不到对应的deviceToken,后面在Linux / M1上构建才正常😂😂
bark
,只是做对比分析怀疑是 appstore 上的 自架版获取的 deviceToken 的问题?
使用同款类型的推送工具bark
启动 gorush -c ios.yml
ios.yml 的配置如下
启动命令如下:
发送情况:
是成功
如上验证过程好像没啥毛病,测试的最终结果也是OK的
在测试 bark
时, 编排 ios.yml 的时候,看到一个配置项是 false
的,如下,也发送不了,改为 true
,就能发送了
ios:
production:false
bark
还是 pushdeer
,都是采用生产环境的的发送模式呢?ios.yml
编排
ios:
enabled: true
key_path: "c.p12"
key_base64: "" # load iOS key from base64 input
key_type: "p12" # could be pem, p12 or p8 type
password: "64wtMhU4mULj" # certificate password, default as empty string.
production: true
max_concurrent_pushes: 100 # just for push ios notification
max_retry: 0 # resend fail notification, default value zero is disabled
key_id: "66M7BD2GCV" # KeyID from developer account (Certificates, Identifiers & Profiles -> Keys)
team_id: "HUJ6HAE4VU" # TeamID from developer account (View Account -> Membership)
curl -X POST -H 'Content-Type: application/json' -d '{"notifications":[{"tokens":["A9C7BA4CD03C319579A071A3BFB**********CCD2633ACBD2C8E9C274D3A"],"platform":1,"message":"111","topic":"com.pushdeer.self.ios","sound":{"volume":2}}]}' http://127.0.0.1:8888/api/push
4. 效果截图
- 截图1
<img width="1311" alt="image" src="https://user-images.githubusercontent.com/12711819/163300745-7968072b-3335-4853-9ee9-67e71922a104.png">
- 截图2
![image](https://user-images.githubusercontent.com/12711819/163300954-b4375e51-cb3c-4b67-aaac-f33b2bd6b637.png)
## 总结:
1. 为啥会有第一个猜想呢?是因为,我看了 [apns2](https://github.com/sideshow/apns2) 里发送的都是小写的 `deviceToken`
2. 不清楚 ios 的推送流程(包含 apns的推送模式,deviceToken 的获取方案,这里建议,pushdeer 也支持一下,能在设置里,显示 deviceToken,并支持复制)
使用的是自架服务端,ios 商店下载的自架版
命令行推送异常截图
手机或电脑的的详细信息
Device: [e.g. iPhone12]
OS: [e.g. iOS15.4.1]
注册设备页面截图