问题+澄清:使用 Google 云消息传递从 Raspberry Pi 向 Android 手机发送消息

Posted

技术标签:

【中文标题】问题+澄清:使用 Google 云消息传递从 Raspberry Pi 向 Android 手机发送消息【英文标题】:Issues+Clarification: Sending message from Raspberry Pi to Android Phone using Google cloud Messaging 【发布时间】:2014-10-09 08:48:12 【问题描述】:

我是 Raspberry Pi 和 Google Cloud Messaging 的新手。我想要做的如下:Raspberry Pi 正在读取一些传感器数据,我想将数据实时发送到我的 android 手机,即一旦收到传感器读数,它将被推送到手机。我研究了各种方法来做到这一点,并认为使用 Google Cloud Messaging 最适合我。所以,我做了以下事情:

    在线创建了一个 GCM 项目 在项目中,我使用树莓派的 IP 地址生成了一个服务器 API 密钥。

    然后从 RPi 运行以下程序。代码中的API就是上面的API(取自Google Cloud Messaging HTTP Error 400: Bad Request)

    导入 json

    import urllib
    
    import urllib2
    
        class RemoteAlert:
            def sendGCM(self, regid, email, entry_id, date_modified, kind):
                url = "https://android.googleapis.com/gcm/send'
                apiKey = MY_API
                myKey = "key=" + apiKey
    
                json_data =  "registration_id": regid, "data" : 
                    "entry_id" : entry_id,
                    "email": email,
                    "date_modified": date_modified,
                    "kind": kind,
                    "reg_id": regid,
                    ,
                
                headers = 'Content-Type': 'application/json', 'Authorization': myKey
                data = urllib.urlencode(json_data)               
                req = urllib2.Request(url, data)
                req.add_header("Authorization", myKey)               
                f = urllib2.urlopen(req)
                response = f.read()
                f.close()
                print "DONE"
    
        obj = RemoteAlert()
        print obj.sendGCM("1234", "xxxxxx@gmail.com", "24", "10-09-2014", "VAL")
    

我的问题和疑问:

    当我从 RPi 运行上述代码时,我收到“授权错误 401”。为什么? 我是否正确完成了所有步骤?我可以从我的 RPi 中简单地运行上述代码,而无需在任何地方安装任何 GCM 服务器吗? 我不知道我需要在 GCM 项目站点中编写什么样的代码才能接收/发送/使用此消息。 这部分工作完成后,我将编写一个客户端程序来接收我的安卓手机中的 RPi 数据。

我已经查看了以下页面寻求帮助:

    Sending notifications to Google Cloud Messaging with php gives me Unauthorized Error 401 http://fryerblog.com/post/30057483199/implementing-push-notifications-with-gcm

任何帮助表示赞赏!谢谢!

【问题讨论】:

HI Kajarid..我也在做同样的事情..你找到以下问题的任何解决方案了吗?如果是,请在答案文件中更新它。这对我真的很有帮助.. HI Kajarid..我也在做同样的事情..你找到以下问题的任何解决方案了吗?如果是,请在提交的答案中更新它。这对我真的很有帮助。谢谢 嗨@Dhrumi,请查看我刚刚发布的答案。 【参考方案1】:

我无法解决上述错误。但是我可以使用带有 GCM 的 Amazon SNS 成功地将推送通知发送到 Android 手机!

我从我的 IoT 设备将传感器数据发送到托管在 Amazon EC2 上的 Web 服务。从 EC2 我使用 SNS 和 GCM 将数据推送到 Android 手机。它没有任何问题。

我使用 Web 服务将数据发送到 EC2 实例。但 Amazon Kinesis 是一种将数据实时流式传输到 Amazon 云的更有效方式。

AWS 提供免费会员资格来试用他们的许多云实用程序。 Kinesis 不是免费的,因此我没有尝试过。但我知道有人在使用它。

您可以从 Amazon SNS 官方教程网站下载整个 Android 项目源代码,稍加个性化后使用。

【讨论】:

以上是关于问题+澄清:使用 Google 云消息传递从 Raspberry Pi 向 Android 手机发送消息的主要内容,如果未能解决你的问题,请参考以下文章

Google 云消息传递实例 ID 是永久的还是临时的?

如何将 Azure 通知 REST API 与 Google 云消息传递一起使用

使用 Google 云消息传递和服务工作者的桌面推送通知

使用 Firebase 云消息传递从服务器端管理主题订阅的示例 GET 请求

适用于 iOS 应用的 GCM(Google 云消息传递)

Firebase 与 Android Java 中的 Google 云消息传递