googlesamples / ios-nearby

69 stars 30 forks source link

Pub/Sub in Background #16

Open stownsend opened 7 years ago

stownsend commented 7 years ago

Hi,

I was pleased to see that Nearby can now operate in the background on iOS. However, I'm having trouble getting it to work as expected.

When I initially set up the publication and subscription objects, and place the app in the background, discovery/messages cease after a few seconds, however other devices/messages are seen during this time. At present, this issue is occurring between 2 iOS devices. When the app is re-awoken after a period of ~5mins, the publication and subscription objects seem to reset and the devices no longer detect the messages of the other devices. This wakeup is triggered by a silent push notification.

I have the appropriate background modes enabled, and have set both pub/sub to allowBackground = YES. Attached logs below.

2016-08-25 11:56:08.851 BTLEPushTest[1014:399239] Subscribe (mediums: 2, broadcast/scan: 3, beacons: 0/1/1, background: 1) 2016-08-25 11:56:08.854 BTLEPushTest[1014:399239] Publish (mediums: 2, broadcast/scan: 3, beacons: 0/0/0, background: 1) 2016-08-25 11:56:08.857 BTLEPushTest[1014:399239] [PW] [I] -[PWLocationTracker] location services authorization status has not been determined yet 2016-08-25 11:56:08.862 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 0 broadcast 2016-08-25 11:56:08.862 BTLEPushTest[1014:399239] Report RPC request: 0 token(s), 0 beacon(s), 0 directive(s) 2016-08-25 11:56:08.867 BTLEPushTest[1014:399239] Report RPC request: Subscribe: 1 2016-08-25 11:56:08.871 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 0 broadcast 2016-08-25 11:56:08.871 BTLEPushTest[1014:399239] Report RPC request: 0 token(s), 0 beacon(s), 0 directive(s) 2016-08-25 11:56:08.872 BTLEPushTest[1014:399239] Report RPC request: Publish: 1 2016-08-25 11:56:09.544 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 11:56:09.546 BTLEPushTest[1014:399239] Report RPC response: 6 directive(s), 0 token(s), 0 message(s), 1 publication results(s), 0 subscription results(s) 2016-08-25 11:56:09.547 BTLEPushTest[1014:399239] BLE: Ad packet token changed to: lLYC-o4O7L4 2016-08-25 11:56:09.547 BTLEPushTest[1014:399239] BLE: GATT token changed to: hp2udS3Jsmc 2016-08-25 11:56:09.560 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 2 broadcast 2016-08-25 11:56:09.560 BTLEPushTest[1014:399239] Report RPC request: 2 token(s), 0 beacon(s), 4 directive(s) 2016-08-25 11:56:09.659 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 11:56:09.659 BTLEPushTest[1014:399239] Found 01 2016-08-25 11:56:09.659 BTLEPushTest[1014:399239] Report RPC response: 6 directive(s), 0 token(s), 1 message(s), 0 publication results(s), 1 subscription results(s) 2016-08-25 11:56:09.660 BTLEPushTest[1014:399239] BLE: Ad packet token changed to: knCKlWKH5CM 2016-08-25 11:56:09.660 BTLEPushTest[1014:399239] BLE: GATT token changed to: VYBW0mRtkpQ 2016-08-25 11:56:09.673 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 2 broadcast 2016-08-25 11:56:09.674 BTLEPushTest[1014:399239] Report RPC request: 2 token(s), 0 beacon(s), 4 directive(s) 2016-08-25 11:56:09.975 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 11:56:09.976 BTLEPushTest[1014:399239] Report RPC response: 0 directive(s), 2 token(s), 1 message(s), 0 publication results(s), 0 subscription results(s) 2016-08-25 11:56:10.062 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 11:56:10.063 BTLEPushTest[1014:399239] Report RPC response: 0 directive(s), 2 token(s), 0 message(s), 0 publication results(s), 0 subscription results(s) 2016-08-25 12:01:20.354 BTLEPushTest[1014:399239] Subscribe (mediums: 2, broadcast/scan: 3, beacons: 0/1/1, background: 1) 2016-08-25 12:01:20.355 BTLEPushTest[1014:399239] Publish (mediums: 2, broadcast/scan: 3, beacons: 0/0/0, background: 1) 2016-08-25 12:01:20.356 BTLEPushTest[1014:399239] BLE: Ad packet token changed to: 2016-08-25 12:01:20.356 BTLEPushTest[1014:399239] BLE: GATT token changed to: 2016-08-25 12:01:20.356 BTLEPushTest[1014:399239] Unpublish 2016-08-25 12:01:20.358 BTLEPushTest[1014:399239] BLE: Ad packet token changed to: 2016-08-25 12:01:20.359 BTLEPushTest[1014:399239] BLE: GATT token changed to: 2016-08-25 12:01:20.360 BTLEPushTest[1014:399239] Unsubscribe 2016-08-25 12:01:20.375 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 0 broadcast 2016-08-25 12:01:20.375 BTLEPushTest[1014:399239] Report RPC request: 0 token(s), 0 beacon(s), 0 directive(s) 2016-08-25 12:01:20.377 BTLEPushTest[1014:399239] Report RPC request: Subscribe: 1 2016-08-25 12:01:20.383 BTLEPushTest[1014:399239] Report RPC request: Unsubscribe: 1 2016-08-25 12:01:20.385 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 0 broadcast 2016-08-25 12:01:20.386 BTLEPushTest[1014:399239] Report RPC request: 0 token(s), 0 beacon(s), 0 directive(s) 2016-08-25 12:01:20.386 BTLEPushTest[1014:399239] Report RPC request: Publish: 1 2016-08-25 12:01:20.387 BTLEPushTest[1014:399239] Report RPC request: Unpublish: 1 2016-08-25 12:01:20.390 BTLEPushTest[1014:399239] =============Silent Notif. Rec.============== 2016-08-25 12:01:20.394 BTLEPushTest[1014:399239] AppDelegate: Starting Scan Background Task # 41 2016-08-25 12:01:21.417 BTLEPushTest[1014:400218] [PW] [D] -[PushNotificationManager] sendStats completed 2016-08-25 12:01:21.421 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 12:01:21.421 BTLEPushTest[1014:399239] Report RPC response: 6 directive(s), 0 token(s), 0 message(s), 1 publication results(s), 0 subscription results(s) 2016-08-25 12:01:21.422 BTLEPushTest[1014:399239] BLE: Ad packet token changed to: U-NIb5J3TlE 2016-08-25 12:01:21.422 BTLEPushTest[1014:399239] BLE: GATT token changed to: Gobhtqv2KYA 2016-08-25 12:01:21.444 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 12:01:21.445 BTLEPushTest[1014:399239] Report RPC response: 6 directive(s), 0 token(s), 0 message(s), 0 publication results(s), 1 subscription results(s) 2016-08-25 12:01:21.445 BTLEPushTest[1014:399239] BLE: Ad packet token changed to: hGvjlnTHBec 2016-08-25 12:01:21.446 BTLEPushTest[1014:399239] BLE: GATT token changed to: KdST10Xc5l4 2016-08-25 12:01:21.530 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 2 broadcast 2016-08-25 12:01:21.532 BTLEPushTest[1014:399239] Report RPC request: 2 token(s), 0 beacon(s), 4 directive(s) 2016-08-25 12:01:21.535 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 2 broadcast 2016-08-25 12:01:21.536 BTLEPushTest[1014:399239] Report RPC request: 2 token(s), 0 beacon(s), 4 directive(s) 2016-08-25 12:01:21.941 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 12:01:21.941 BTLEPushTest[1014:399239] Report RPC response: 0 directive(s), 2 token(s), 0 message(s), 0 publication results(s), 0 subscription results(s) 2016-08-25 12:01:22.001 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 2 broadcast 2016-08-25 12:01:22.003 BTLEPushTest[1014:399239] Report RPC request: 2 token(s), 0 beacon(s), 4 directive(s) 2016-08-25 12:01:22.017 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 12:01:22.018 BTLEPushTest[1014:399239] Report RPC response: 0 directive(s), 2 token(s), 0 message(s), 0 publication results(s), 0 subscription results(s) 2016-08-25 12:01:22.032 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 2 broadcast 2016-08-25 12:01:22.032 BTLEPushTest[1014:399239] Report RPC request: 2 token(s), 0 beacon(s), 4 directive(s) 2016-08-25 12:01:22.468 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 12:01:22.471 BTLEPushTest[1014:399239] Report RPC response: 0 directive(s), 2 token(s), 0 message(s), 0 publication results(s), 0 subscription results(s) 2016-08-25 12:01:22.476 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 12:01:22.477 BTLEPushTest[1014:399239] Report RPC response: 0 directive(s), 2 token(s), 0 message(s), 0 publication results(s), 0 subscription results(s) 2016-08-25 12:01:25.879 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 2 broadcast 2016-08-25 12:01:25.880 BTLEPushTest[1014:399239] Report RPC request: 2 token(s), 0 beacon(s), 4 directive(s) 2016-08-25 12:01:26.329 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 12:01:26.331 BTLEPushTest[1014:399239] Report RPC response: 0 directive(s), 2 token(s), 0 message(s), 0 publication results(s), 0 subscription results(s) 2016-08-25 12:01:31.242 BTLEPushTest[1014:399239] Tokens: 0 good, 0 bad, 2 broadcast 2016-08-25 12:01:31.244 BTLEPushTest[1014:399239] Report RPC request: 2 token(s), 0 beacon(s), 4 directive(s) 2016-08-25 12:01:31.760 BTLEPushTest[1014:399239] Report RPC response: Success 2016-08-25 12:01:31.761 BTLEPushTest[1014:399239] Report RPC response: 0 directive(s), 2 token(s), 0 message(s), 0 publication results(s), 0 subscription results(s)

Is there something I'm missing with setting up Nearby to work in the background?

dan-webb commented 7 years ago

Hi Samuel,

Thanks for reaching out -- hopefully we can quickly figure out why Nearby isn't working for you.

I can see from the logs that your device hasn't heard any tokens from nearby devices when the publications & subscriptions are active, so I'm inclined to believe that there's a problem with BLE (Bluetooth Low Energy). This can happen for the following reasons:

  1. Bluetooth is turned off. Can you check that it's turned on?
  2. Nearby devices aren't scanning or advertising on BLE. Are you running the same app on the other iOS device, and is Bluetooth turned on for that device?

When BLE is working as expected, you should see some logs like these:

2016-08-26 13:28:52.916 MyApp[267:13432] Heard new token: <GCPToken 0x14ef18ed0>: {tokenId oMOiOEo1Q0M, first seen 1:28:52 PM, last seen 1:28:52 PM, [ble-adv]} 2016-08-26 13:28:53.832 MyApp[267:13432] Heard new token: <GCPToken 0x14eda1f40>: {tokenId z7ofWu2dvco, first seen 1:28:53 PM, last seen 1:28:53 PM, [ble-gatt]}

dan-webb commented 7 years ago

Samuel,

I recently released two new sample apps for Nearby on iOS, including one that demonstrates background mode for pubs/subs, which you'll find here: https://github.com/googlesamples/ios-nearby/tree/master/NearbyBackgroundExample

I'm hoping this will be helpful to you if you're still having trouble with background mode.

stownsend commented 7 years ago

Hi Dan, Sorry for such a delayed response, things got pretty busy.

Thanks for the example, I hope to take a look over the next few days. I really appreciate it

Sam

ritesh124 commented 5 years ago

@dan-webb we tried with you sample application with just 2 iOS phones. we were expecting that when both were in background (like a use-case when both coming from a distance apart) that both will get notifications . However, this does not work unless and until one iphone comes in foreground. Is it not possible to get a notification on both iphones if both are running in background ?