blob: 23ccd82621d01976872b6e165a195fe3bf8dbf63 [file] [log] [blame]
// Copyright 2015, the Flutter authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:sky_services/gcm/gcm.mojom.dart';
GcmServiceProxy _initGcmService() {
GcmServiceProxy gcmService = new GcmServiceProxy.unbound();
shell.connectToService(null, gcmService);
return gcmService;
}
final GcmServiceProxy _gcmService = _initGcmService();
typedef void GcmListenerCallback(String from, String message);
class _GcmListenerImpl implements GcmListener {
_GcmListenerImpl(this.callback);
GcmListenerCallback callback;
void onMessageReceived(String from, String message) {
callback(from, message);
}
}
Future<String> registerGcmService(String senderId, GcmListenerCallback listenerCallback) async {
GcmListenerStub listener = new GcmListenerStub.unbound()
..impl = new _GcmListenerImpl(listenerCallback);
GcmServiceRegisterResponseParams result =
await _gcmService.ptr.register(senderId, listener);
return result.token;
}
void subscribeTopics(String token, List<String> topics) {
_gcmService.ptr.subscribeTopics(token, topics);
}
void unsubscribeTopics(String token, List<String> topics) {
_gcmService.ptr.unsubscribeTopics(token, topics);
}