#!/usr/bin/python3 from gi.repository import GLib import sys import dbus import dbus.service import dbus.mainloop.glib class PushNotificationAgent(dbus.service.Object): @dbus.service.method("org.ofono.PushNotificationAgent", in_signature="", out_signature="") def Release(self): print("Release") mainloop.quit() @dbus.service.method("org.ofono.PushNotificationAgent", in_signature="aya{sv}", out_signature="") def ReceiveNotification(self, data, props): for key in props.keys(): print("Key: %s, Value: %s" % (key, props[key])) print("Received notification of size: %d" % len(data)) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object("org.ofono", "/"), "org.ofono.Manager") modems = manager.GetModems() for path, properties in modems: if "org.ofono.PushNotification" not in properties["Interfaces"]: continue pn = dbus.Interface(bus.get_object('org.ofono', path), 'org.ofono.PushNotification') path = "/test/agent" agent = PushNotificationAgent(bus, path) pn.RegisterAgent(path) print("Agent registered") mainloop = GLib.MainLoop() try: mainloop.run() except KeyboardInterrupt: pn.UnregisterAgent(path) mainloop.run()