我正在编写一个定制的Android Wear应用程序,该应用程序应该向连接的主机设备(手机)发送一次性消息。通过对API的深入研究,我发现以下教程应该可以很好地工作:http://developer.android.com/training/wearables/data-layer/messages.html
我的Android应用程序有一个WearableListenerService,我的Android Wear应用程序使用Message API发送消息。WearableListenerService在通过以下方法进行日志记录连接仿真器时调用GET,因此我非常肯定服务连接良好
@Override
public void onPeerConnected(Node peer) {
super.onPeerConnected(peer);
String id = peer.getId();
String name = peer.getDisplayName();
Log.d(LOG_TAG, "Connected peer name & ID: " + name + "|" + id);
}
日志输出:
/AndroidWearListenerService(19892): Connected peer name & ID: facdc219-37f5-4326-8fa6-1c8b8d3b6669|facdc219-37f5-4326-8fa6-1c8b8d3b6669
但是,onMessageReceived方法从未被触发:
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Log.d(LOG_TAG, "MessageEvent received: " + messageEvent.getData());
//do work
}
这是我的Android穿戴代码。我已经删除了大部分锅炉板代码,只留下必要的位
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
final GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.build();
googleApiClient.connect();
final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
fireMessage();
}
private void fireMessage() {
// Send the RPC
PendingResult<NodeApi.GetConnectedNodesResult> nodes = Wearable.NodeApi.getConnectedNodes(googleApiClient);
nodes.setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
@Override
public void onResult(NodeApi.GetConnectedNodesResult result) {
for (int i = 0; i < result.getNodes().size(); i++) {
Node node = result.getNodes().get(i);
String nName = node.getDisplayName();
String nId = node.getId();
Log.d(TAG, "Node name and ID: " + nName + " | " + nId);
Wearable.MessageApi.addListener(googleApiClient, new MessageApi.MessageListener() {
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Log.d(TAG, "Message received: " + messageEvent);
}
});
PendingResult<MessageApi.SendMessageResult> messageResult = Wearable.MessageApi.sendMessage(googleApiClient, node.getId(),
PATH, null);
messageResult.setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() {
@Override
public void onResult(MessageApi.SendMessageResult sendMessageResult) {
Status status = sendMessageResult.getStatus();
Log.d(TAG, "Status: " + status.toString());
if (status.getStatusCode() != WearableStatusCodes.SUCCESS) {
alertButton.setProgress(-1);
label.setText("Tap to retry. Alert not sent :(");
}
}
});
}
}
});
}
});
}
D/MyWearApp MyActivity( 2014): Node name and ID: a2ba665d-a559-4a95-91d2-c16fc7873e28 | a2ba665d-a559-4a95-91d2-c16fc7873e28
D/MyWearApp MyActivity( 2014): Status: Status{statusCode=SUCCESS, resolution=null}
您是否确保了两个应用程序的“applicationID”是相同的,即Android系统上的应用程序和手机上的应用程序?
我需要使用< code>aws-sdk-go lib通过设备令牌数组向多个设备发送SNS推送通知。 目前我正在使用以下步骤向SNS发送推送消息: 创建endpoint: 将消息发送到endpoint: 我还没有见过一种方法,只使用一个请求就可以将一个推送消息发送到多个设备。可能吗? 像这个例子来说明:
我有一个包含用户名数据库的服务器。我还有一个Android应用程序,用户可以在服务器数据库中注册自己的用户名,也可以在服务器的GCM部分注册设备。 我目前正在服务器代码中使用GCM演示,它将多播一个推送通知到每个注册的设备。但是,我希望它能够将推送通知发送给某些用户,而不是每个注册的GCM设备。 我的第一个想法是将数据库中的每个用户与其GCM注册表关联起来。这样行吗?我读过一些关于regID更改或
我正在Symfony3上开发REST API应用程序。我想注册移动设备并向它们发送直接推送通知。例如,当一个用户向另一个用户发送反馈时,第二个用户将获得推送通知。 有了Amazon SNS,可以不广播,而是直接从服务器通知单个设备吗?
我正在研究使用从旧的Google云消息传递应用程序迁移的Firebase云消息传递向项目发送消息的可能性。 旧应用程序仅使用CURL和应用程序在我的服务器上的唯一GCM API密钥从php网页向Android设备发送消息。 因此,每个android设备只需注册代码,例如: 让 Google 服务器使每台设备都可单独寻址。(注册表存储在我的服务器上的MySql数据库中,因此我知道要处理哪个设备。 A
我正在使用Jmeter分布式测试在远程机器中运行JMX文件。两者都连接良好,远程机器不会向我发送任何结果。它说刚刚开始测试并完成测试。但是没有结果被发送回主计算机。
在搜索文档之后,我找不到任何关于如何在没有使用外部服务器的情况下使用FCM向设备发送消息的信息。 例如,如果我正在创建一个聊天应用程序,我将需要向用户发送关于未读消息的推送通知,因为他们不会一直在线,而且我不可能在后台有一个始终连接到实时数据库的持久服务,因为这会占用太多资源。 那么当某个用户“B”向他/她发送聊天消息时,我将如何向用户“a”发送推送通知呢?我需要一个外部服务器来完成这个任务吗?还