将通知从 python 推送到 android

Posted

技术标签:

【中文标题】将通知从 python 推送到 android【英文标题】:Push notification from python to android 【发布时间】:2018-04-17 13:52:32 【问题描述】:

我正在运行一些脚本,并在脚本运行完成后寻找一种简单的方法来 ping 我的手机。

在网络上做一些研究,我看到了使用 Slack、Push bullet、twilio、电子邮件等发送消息的方法。

我正在寻找一种从 python 向我的手机发送 ping/消息的简单方法的建议。

从某种意义上说很简单,它不需要大量配置外部帐户或付费服务。

【问题讨论】:

如果您正在运行 Linux,并且可以接受保持在同一个 WiFi 网络上,KDE Con​​nect 有一个非常好的命令行客户端,您可以使用它来 ping 您的手机。 kdeconnect-cli -d <DEVICE_ID> --ping-msg 'Script complete!' 不幸的是我不是!但是感谢您的建议! 嗯...想到的另一件事是ifttt.com。我使用它已经有好几年了,从来没有使用过 Python,但我确实发现它可以与之交互,而且 IFTTT 应该能够做你想做的事。 github.com/briandconnelly/pyfttt 【参考方案1】:

你可以试试 cmd:pip install telegram-send,然后向你的 Telegram 机器人发送一条消息。 在 BotFather 创建你的电报机器人,从那里获取一个令牌,将其粘贴到

cmd: telegram-send --configure

用法:

import telegram_send
telegram_send.send(messages=["Hello world"])

我发现这比任何其他推送通知都要好。

更多信息: Link1 Link2

【讨论】:

可以在我的手机上使用,但是如何添加第二个人呢?我也想推给别人 @ikel 只需将您的机器人的链接提供给该人,或创建一个私人组并将您的机器人设置为将所有内容重定向到该组,然后关注该组并接受应该看到在那里的每个人。 (百万种方法)【参考方案2】:

我找到了一个更简单的方法,但它不适用于 Linux。 Here 是更多详情的链接。

首先你必须安装 notify_run:

pip install notify_run

然后你必须注册:

notify-run register

它会给你一个二维码(在 Windows 上二维码不起作用)和一个链接,它将带你到一个网站,然后按“在此设备上订阅”(也许你必须刷新网站)

然后使用这个代码:

from notify_run import Notify

notify = Notify()
notify.send('any message you want')

【讨论】:

此方法向浏览器发送消息。我在 android 上没有看到任何通知。我错过了什么吗? 是的,这会将消息发送到浏览器,但您应该会收到通知。 此解决方案似乎不适用于有用户的生产环境,而仅适用于个人项目。 我可以让消息显示在我的浏览器中,但我没有收到任何通知(在我的 Android 手机或我的电脑上)【参考方案3】:

我尝试过 Twilio,但它很复杂,而且我认为它不能(不再)免费向您发送消息。 Telegram 似乎是一个简单的解决方案。为了延伸到@Nick PV 的答案,以下是我作为 Telegram 初学者所采取的步骤:

1) 使用您的电话号码获取 Telegram 帐户(免费)

网址:https://web.telegram.org 同时下载 Telegram Andriod。当然,你毕竟想要手机上的通知

2) 进入设置(网页或应用)并设置用户名

这是获取id 所必需的,您的机器人将使用该id 向其发送消息

3) 向 RawDataBot 发送消息以获取您的 id

只需搜索 RawDataBot 并发送任何消息(hi 即可)。记下您的id

4) 创建您的机器人(您将使用 HTTP 请求对其进行命令)

现在搜索 BotFather 并发送消息/start。显示帮助。发送消息/newbot 并按照说明进行操作。记下您的令牌以访问 HTTP API

5) 使用 Python 发送 API 请求

您可以安装和使用telegram-send,但如果您像我一样喜欢通用库requests,它将为您提供处理任何 HTTP API 的经验,这就是如何这样做:

import requests
token = "token_from_step_4"
url = f"https://api.telegram.org/bottoken"
params = "chat_id": "id_from_step_3", "text": "Hello World"
r = requests.get(url + "/sendMessage", params=params)

链接: 电报机器人:https://core.telegram.org/bots API 文档 sendMessage https://core.telegram.org/bots/api#sendmessage

【讨论】:

【参考方案4】:

最后,我发现最简单的方法是使用 Slack。它需要一个 Python 函数(大约 6 行)和一个 Slack 帐户。

更多细节可以在这里找到on medium

【讨论】:

Medium 上的这个解决方案似乎已经过时了【参考方案5】:

我在我的计算机上尝试了pushsafer 和notify-run,但没有成功(Linux Mint 19.3 tricia)

在我的电脑上,只有Slack 可以正常工作。这篇文章来自Youtube video,您将在视频中看到完整的过程。

您首先需要的是设备上的 Slack 应用程序(ios、Android 等)并创建一个 Slack 帐户(如果没有完成)

教程:

    创建工作区和应用程序(请参阅this video 中的详细信息。抱歉,我没有将子步骤放在这里,但我将这个答案作为社区 wiki 放置,以便让您完成我开始的工作 :))

    安装python库pip3 install sandesh

    pip3 安装 Sandesh

    获取您的 webhook => https://hooks.slack.com/services/blablabla

    使用此示例向 Slack 发送消息:

python 代码:

import sandesh
sandesh.send("This is my test", webhook="<put here the https link of your webhook>")

可以找到开源的sandesh python模块here in gitHub

【讨论】:

还有一个slack python 库,我用它代替了sandesh,我发现它非常容易使用——Tech With Tim 上面有一个good tutorial。无需配置网络挂钩——只需将您的 API 令牌提供给 WebClient 并调用 chat_postMessage(channel, message)

以上是关于将通知从 python 推送到 android的主要内容,如果未能解决你的问题,请参考以下文章

无需谷歌云消息(GCM)将通知从 PC 推送到 android

将通知从 iOS 推送到 Android 不起作用

使用 Azure 将通知从 ASP.Net 页面推送到不同平台

将通知从 Web 服务器推送到 Android 应用程序

通知后,从应用程序委托将视图控制器推送到选项卡栏中

我能否将通知从 WP8 推送到 Windows 应用商店应用程序?