Android アプリケーションで Google クラウド メッセージを受信すると、MS Band にアラートを表示しようとしています。メッセージの送信と応答に Azure Notification Hubs を使用しています。メッセージを受け取り次第、バンドに通知を送信したいと思います。
現在発生している問題は、NotificationHandler でバンド接続を確認すると、次の例外がスローされることです。
BroadcastReceiver コンポーネントはサービスにバインドできません
問題のコードは次のとおりです。
if (client == null) {
BandInfo[] devices = BandClientManager.getInstance().getPairedBands();
if (devices.length == 0) {
Log.i(TAG, "Band isn't paired with your phone");
return false;
}
client = BandClientManager.getInstance().create(ctx, devices[0]);
} else if (ConnectionState.CONNECTED == client.getConnectionState()) {
return true;
}
Log.i(TAG, "Band is connecting...");
return ConnectionState.CONNECTED == client.connect().await();
呼び出し時に例外がスローされるclient.connect().await()
通知ハンドラーは舞台裏で BroadcastReceiver として構成されており、Band とやり取りしようとすることで、サービスにバインドすることで BroadcastReceiver のルールを破っていると思います。
このシナリオをどのように処理すればよいですか? 確かに、これは一般的なシナリオです。アプリケーションによってピックアップされたときに、バンドで通知をミラーリングしますか? 私がこれを処理すると考えている唯一の方法は、新しいインテント サービスを作成して通知を表示し、BroadcastReciever から開始することですが、これはちょっと不格好に思えますか?