mirror of
https://github.com/Finb/Bark.git
synced 2026-04-26 14:35:53 +03:00
[GH-ISSUE #99] 某次大幅的更新后,传递的URL参数中如果包含大括号{},url就不会进行跳转 #91
Labels
No labels
bug
enhancement
in progress
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/Bark#91
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ivanusong on GitHub (May 31, 2021).
Original GitHub issue: https://github.com/Finb/Bark/issues/99
因为项目中有网址+json参数的传递,忘记是哪次ios客户端更新了之后,就不会跳转了,经测试发现是只要传递参数中包含{},就不会跳转,URL编码之后也不行。求解
@Finb commented on GitHub (May 31, 2021):
我测试是正常的。
需要特别注意URL编码,使整个URL符合规范
例如要传递的URL是
URL中的 wd 参数值需要URL编码后,成为一个合法URL
上面的
百度URL当做推送URL的url参数的参数值时,参数值也需要编码。 最后的请求URL应该是这样的@ivanusong commented on GitHub (May 31, 2021):
感谢您的测试,按照您给百度链接通过URL编码后是正常的。
但是否是因为我所用的链接并不是 http/https 的标准网址链接,而是
URLscheme,作用是用来调起其他 APP。劳烦您测试一下这个 URL ,如果粘贴在浏览器里是会调起京东APP的,但是通过 bark 推送过来就无法自动跳转,但是如果去掉其中的
{}又可以了,通过 bark 客户端 app 的历史消息来看,传递过来的 url 是被解码过的原始信息。测试 URL:
@ivanusong commented on GitHub (May 31, 2021):
补充一下,在之前旧的版本时(至少我记得1.1.0版本还是可用的,那时候刚更新了提示音功能),都是正常可以跳转的。
@Finb commented on GitHub (May 31, 2021):
这个URL也一样
params参数部分为了符合规范,需要进行URL编码
编码后应该是
再对整个URL进行编码,拼接到推送URL
总之就是 URL的参数,需要URL编码。防止参数中的特殊字符破坏URL结构
之前的老版本不遵守URL规范可以解析,但最好还是使用标准URL发送推送。
或者你可以使用POST发送推送请求
或者使用V2接口,使用JSON发送推送请求
https://github.com/Finb/bark-server/blob/master/docs/API_V2.md
@ivanusong commented on GitHub (May 31, 2021):
测试了几条 URL
猜测是否是因为正则匹配是以 http(s) 开头,而不以这开头的信息将自动被完整解码,而以 http(s) 开头的则仅解码 URL 域名部分?
@ivanusong commented on GitHub (May 31, 2021):
抱歉。终于明白了,首先对参数进行一次编码,然后对整个 URL 再次编码,其实是两次编码,我真笨。。。