以推送通知的形式从设备中的一个应用程序向另一设备中的另一个应用程序发送一些数据

Posted

技术标签:

【中文标题】以推送通知的形式从设备中的一个应用程序向另一设备中的另一个应用程序发送一些数据【英文标题】:Sending some data in form of Push Notification from one app in a device to another app in another device 【发布时间】:2018-06-29 05:57:43 【问题描述】:

我正在 android 中同时开发两个应用程序。一个是假设“App A”,另一个是“App B”。我想以Push Notification的形式从App A(在设备A中)向App B(在设备B中)发送数据,例如头像和姓名,这将由App A发送并由App B接收。所有这一切将通过 FCM 完成。谁能建议我应该遵循的技术方法?任何类型的链接也会有所帮助。

【问题讨论】:

【参考方案1】:

我制作了 2 个通过通知进行通信的不同应用

方法如下:

注意这只是一个使用 rxjava 和改造 2.0 的伪代码

你的代码我取决于你使用什么

在您的改造实例中:

注意:https://fcm.googleapis.com 是基本网址

retrofit = new Retrofit.Builder()
            .baseUrl("https://fcm.googleapis.com")
            .client(getHttp())
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();

    service  = retrofit.create(SendMsgService.class);

然后在你的服务类中:

 @POST("/fcm/send")
 rx.Observable<Message> sendMsg(@Header("Authorization") String auth,
                                @Body Message Message);

您的 DataModel 类(这里,data,message_id 是 fcm 中的几个预定义参数):

@SerializedName("to")
@Expose
private String to;
@SerializedName("data")
@Expose
private NotifyData notification;
@SerializedName("message_id")
@Expose
private String message_id;

public Message(String to, NotifyData notification, String message_id) 
    this.to = to;
    this.notification = notification;
    this.message_id = message_id;


public String getTo() 
    return to;


public void setTo(String to) 
    this.to = to;


public NotifyData getNotification() 
    return notification;


public void setNotification(NotifyData notification) 
    this.notification = notification;


public String getMessage_id() 
    return message_id;


public void setMessage_id(String message_id) 
    this.message_id = message_id;

然后调用你的 API:

sendMsgBtn.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 

            NotifyData notifydata = new NotifyData("Notification title","Notification body");

            subscription.add(sendMsgViewModel.sendMsg("key=YOUR_KEY_HERE"
                    ,new Message("fcm_id_of_other_device_you_want_to_send_notification"
                            ,notifydata,""))
                    .subscribe(new Observer<Message>() 
                @Override
                public void onCompleted() 

                

                @Override
                public void onError(Throwable e) 

                

                @Override
                public void onNext(Message message) 

                
            ));
        
    );

【讨论】:

【参考方案2】:

可以从 Android 应用发送推送通知,您需要使用 API REST 来实现,

在这个答案中

Firebase : Send notification with REST API

你可以做一些类似的事情,但是在 android 中使用 asynctask 或者改造来自 android 的 make 请求。

你不能发图片,但是你可以发带图片位置的url,然后下载。

您可以将其发送到安装了另一个应用程序的另一个设备,但您需要拥有设备令牌。

阅读有关 API 参数的 FCM 文档。

【讨论】:

【参考方案3】:

您想要执行的过程涉及的步骤很少,我将尝试提及一些一般步骤。

    这两个应用都需要与 Firebase 集成并链接到一个共享项目。这样他们就可以访问和交流。

    使用 FCM 在每个设备上注册每个应用程序后,您将拥有每个应用程序/设备的唯一标识(注册令牌)。您需要找到一种方法与其他设备进行通信,可以通过共享的 firebase 数据库或您认为合适的任何其他方式。

    然后您可以使用 Firebase 的 REST api 将您的推送通知发送到目标设备here is the documentation

现在说了这么多,您需要仔细检查一下为什么首先需要发送推送通知,因为如果您的目标是沟通,那么您应该弄清楚以完成上面提到的任务 2。

【讨论】:

以上是关于以推送通知的形式从设备中的一个应用程序向另一设备中的另一个应用程序发送一些数据的主要内容,如果未能解决你的问题,请参考以下文章

推送通知-移动到移动[重复]

在 iOS 中将推送通知从一台设备发送到另一台设备

如何将推送通知从一台 iPhone 设备发送到另一台设备? [关闭]

我们可以从 iOS 设备向 APNs 发送推送通知吗?

当其他设备前景时,我应该停止发送推送通知吗?

一种设备到设备的推送通知系统