Hey joe thanks for the speedy reply, unfortunately that does not help. Let me walk you through what my code does and you can tell me where a problem might be.
The app delegate is the delegate for roam, and the location update code is in that file, which calls roam.init, sets roam.delegate, and roam.setloggerenabled.
When the user logs in their data is fetched and then they are also logged into roam via getUser. I am using a completion block with getuser so that when I know the user is fetched I can Roam.startTracking, Roam.subscribe(.location, user.userID), and toggleListener().
When the user logs out, I stopTracking, unsubscribe, and call logoutUser. Then I call roam.init again. Then that login process is repeated for a new user. My suspicion is that the AppDelegate stops syncing for some reason as the delegate because I have had to reinit roam.
Oddly enough it works perfectly if a user is already logged in to the app from before launch, however if I am logging in from a fresh install, or logging out and logging back in, the location updates do not fire.