Android:GCM和谷歌API客户端
我正在测试Google云消息,我想将数据发送到smartwatch,以便在smartwatch应用程序上打开包含数据的通知 所以,我有一个GcmListenerService来处理来自GCM的消息(它正在工作) 现在,我想知道如何实现GoogleAPI客户端 我是这样做的,但它不起作用:Android:GCM和谷歌API客户端,android,google-cloud-messaging,wear-os,google-api-client,Android,Google Cloud Messaging,Wear Os,Google Api Client,我正在测试Google云消息,我想将数据发送到smartwatch,以便在smartwatch应用程序上打开包含数据的通知 所以,我有一个GcmListenerService来处理来自GCM的消息(它正在工作) 现在,我想知道如何实现GoogleAPI客户端 我是这样做的,但它不起作用: public class GcmMessageHandler extends GcmListenerService { private static final String TAG = "GcmMessag
public class GcmMessageHandler extends GcmListenerService {
private static final String TAG = "GcmMessageHandler";
private GoogleApiClient mGoogleApiClient;
public static final int MESSAGE_NOTIFICATION_ID = 435345;
public void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle connectionHint) {
Log.d(TAG, "onConnected: " + connectionHint);
sendNotif();
}
@Override
public void onConnectionSuspended(int cause) {
Log.d(TAG, "onConnectionSuspended: " + cause);
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.d(TAG, "onConnectionFailed: " + result);
}
})
.addApi(Wearable.API)
.build();
}
public void sendNotif () {
if (mGoogleApiClient.isConnected()) {
PutDataMapRequest putDataMapRequest = PutDataMapRequest.create("/new_meeting");
putDataMapRequest.getDataMap().putString("title", "title");
putDataMapRequest.getDataMap().putString("content", "content");
PutDataRequest request = putDataMapRequest.asPutDataRequest();
Wearable.DataApi.putDataItem(mGoogleApiClient, request)
.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
@Override
public void onResult(DataApi.DataItemResult dataItemResult) {
if (!dataItemResult.getStatus().isSuccess()) {
Log.e(TAG, "buildWatchOnlyNotification(): Failed to set the data, "
+ "status: " + dataItemResult.getStatus().getStatusCode());
} else {
Log.e(TAG, dataItemResult.getStatus().getStatusMessage());
}
}
});
} else {
Log.e(TAG, "buildWearableOnlyNotification(): no Google API Client connection");
}
}
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
this.buildGoogleApiClient();
this.mGoogleApiClient.connect();
}
}
public void buildGoogleApiClient() {
Context context = getBaseContext();
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle connectionHint) {
Log.d(TAG, "onConnected: " + connectionHint);
sendNotif();
}
@Override
public void onConnectionSuspended(int cause) {
Log.d(TAG, "onConnectionSuspended: " + cause);
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.d(TAG, "onConnectionFailed: " + result);
}
})
.addApi(Wearable.API)
.build();
}
我在我的侦听器中更改了它,它正在工作:
public class GcmMessageHandler extends GcmListenerService {
private static final String TAG = "GcmMessageHandler";
private GoogleApiClient mGoogleApiClient;
public static final int MESSAGE_NOTIFICATION_ID = 435345;
public void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle connectionHint) {
Log.d(TAG, "onConnected: " + connectionHint);
sendNotif();
}
@Override
public void onConnectionSuspended(int cause) {
Log.d(TAG, "onConnectionSuspended: " + cause);
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.d(TAG, "onConnectionFailed: " + result);
}
})
.addApi(Wearable.API)
.build();
}
public void sendNotif () {
if (mGoogleApiClient.isConnected()) {
PutDataMapRequest putDataMapRequest = PutDataMapRequest.create("/new_meeting");
putDataMapRequest.getDataMap().putString("title", "title");
putDataMapRequest.getDataMap().putString("content", "content");
PutDataRequest request = putDataMapRequest.asPutDataRequest();
Wearable.DataApi.putDataItem(mGoogleApiClient, request)
.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
@Override
public void onResult(DataApi.DataItemResult dataItemResult) {
if (!dataItemResult.getStatus().isSuccess()) {
Log.e(TAG, "buildWatchOnlyNotification(): Failed to set the data, "
+ "status: " + dataItemResult.getStatus().getStatusCode());
} else {
Log.e(TAG, dataItemResult.getStatus().getStatusMessage());
}
}
});
} else {
Log.e(TAG, "buildWearableOnlyNotification(): no Google API Client connection");
}
}
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
this.buildGoogleApiClient();
this.mGoogleApiClient.connect();
}
}
public void buildGoogleApiClient() {
Context context = getBaseContext();
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle connectionHint) {
Log.d(TAG, "onConnected: " + connectionHint);
sendNotif();
}
@Override
public void onConnectionSuspended(int cause) {
Log.d(TAG, "onConnectionSuspended: " + cause);
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.d(TAG, "onConnectionFailed: " + result);
}
})
.addApi(Wearable.API)
.build();
}
此侦听器位于移动设备端,而不是smartwatch