应用程序终止后,Google 附近的 API 后台扫描不起作用

Mic*_*ček 5 android google-play-services beacon google-nearby

我有 kontakt.io 信标,我尝试使用附近的 API 编写用于后台扫描的应用程序。

我使用这种方法订阅消息:

SubscribeOptions options = new SubscribeOptions.Builder()
            // Finds messages attached to BLE beacons. See
            // https://developers.google.com/beacons/
            .setStrategy(Strategy.BLE_ONLY)
            .build();

    Nearby.Messages.subscribe(mGoogleApiClient, getPendingIntent(), options)
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(@NonNull Status status) {
                    if (status.isSuccess()) {
                        Log.i(TAG, "subscribed successfully");
                        mSubState = SubState.SUBSCRIBING;
                        // Start background service for handling the notification.
                        getActivity().startService(getBackgroundSubscribeServiceIntent());
                    } else {
                        Log.i(TAG, "could not subscribe");
                        handleUnsuccessfulNearbyResult(status);
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

我的代码是根据这个示例:https : //github.com/googlesamples/android-nearby/tree/master/messages/NearbyBackgroundBeacons

我正在正确接收消息,但是当我杀死应用程序时,不再有消息来。

杀死应用程序后,有没有办法从附近获取消息?

AL.*_*AL. 1

还没有真正尝试过使用服务,但是您是否考虑/检查过使用 服务?根据描述:

服务本质上可以采用两种形式:

开始

当应用程序组件(例如 Activity)通过调用 startService() 启动服务时,服务就被“启动”。一旦启动,服务就可以无限期地在后台运行,即使启动它的组件被销毁。通常,启动的服务执行单个操作并且不会将结果返回给调用者。例如,它可能通过网络下载或上传文件。操作完成后,服务应自行停止。

边界

当应用程序组件通过调用bindService() 绑定到服务时,服务就被“绑定”了。绑定服务提供了一个客户端-服务器接口,允许组件与服务交互、发送请求、获取结果,甚至通过进程间通信 (IPC) 跨进程执行这些操作。绑定服务仅在另一个应用程序组件绑定到它时才运行。多个组件可以同时绑定到服务,但是当所有组件都解除绑定时,服务就会被销毁。

您可以创建一个Service连续运行扫描的程序,直到您选择停止/销毁它为止。文档本身已经包含了创建启动服务的步骤。只要仔细阅读即可。