The user isn't signed in
When running a dev build of my app built with Unity on the GO, I get the following error through the logs after the platform is initialized: The user isn't signed in or their account state wasn't in a recoverable state. I am signed in on the device, but not sure how to sign out to refresh the token if that's required, without factory resetting. Does anyone how to fix this? This also causes the following error when attempting to get user data: {"error":{"message":"Invalid OAuth 2.0 Access Token","type":"OCApiException","code":190,"error_data":[],"fbtrace_id":"AdktSl4ek+I"}}3.7KViews2likes7CommentsHow to Host/Client games with Mirror and Oculus Rooms ?
Hello everyone! I am working on multiplayer Oculus Quest game that has dedicated servers on Playfab and players could host their own game to play private match with friends. The netcode uses Mirror (HLAPI) and Ignorance Transport (UDP). So I'm working with Oculus.Platform.Rooms to connect friends when they're invited. In the room debugger tool, I see the two players connected in the same room but how to send/receive/synchronize informations ? I want the friend who joined to connect to the host player's. Is anyone already done something like this ? Must I use another Transport ? Project informations : Unity version : 2019.3.15f1 Oculus Utilities : v1.49.0 OVRPlugin : v1.49.0 Oculus SDK : v1.52.0 Mirror : 13.0.1 Ignorance : 1.3901Views0likes0Comments[Bug] Platform - Creating Invalid Requests causes CallbackRunner to silently consume Notifications
Unity 2018.4.3f1 | Oculus Unity Integration 1.38 Hi there, I'm just posting this to identify a bug I spent a while trying to diagnose that ate up my past week. I'm hoping that if anyone else has this issue, this might help them, and that proper steps may be taken to resolve this for newcomers using the Unity Integration tools for the first time. Here's the issue: When making a request that is "invalid", the Unity integration sometimes returns a proper request, but it has Request ID of 0. Any time that this happens, if I register a callback for it, Platform Notifications will be eaten, which may cause random, problematic bugs. Why does this happen? Oculus's Callback.cs contains two separate dictionaries mapping callbacks. In one, you have callbacks for regular repeating things - Room Data Updates, Invite Notifications, Voip Connectivity Changes, etc. In the other, you have mappings of Request IDs to callbacks, where Request IDs are sequential integers that are incremented. When a message is popped off of the ovr message stack, it goes into Callback.cs - HandleMessage. If there's a callback in the `requestIDsToCallbacks` dictionary, it uses it. Otherwise, it tries to see if it was registered in the notification dictionary. The problem is, if you EVER register a callback for a Request with ID 0, Notifications will be eaten up and error. This is because all notifications have Request ID = 0, which means that, TECHNICALLY, there is a callback waiting for Request 0, so that notification will disappear. ------------------------------------------------------ Here's an example. I have a project with a bunch of social properties around Rooms. I want to change the Room datastore to reflect certain environment changes. I can use the UpdateDataStore/ovr_Room_UpdateDataStore call to update my stuff. Well, it turns out that UpdateDataStore returns a Request, and I can schedule a callback for it, to know if the call succeeded or not. So let's say I have part of a call where I want to add new key/value pair to the room. Here's how the final call would look. ... data[key] = value; Rooms.UpdateDataStore(Room.ID, data).OnSuccess("Rooms.UpdateDataStore", (room) => { Debug.Log($"[Room] Successfully updated datastore on room ({room.ID}) with [{key}] | [{value}]"); }); ^ in the code above, OnSuccess is just an extension method that wraps around the default OnComplete: public static void OnSuccess<T>(this Request<T> request, string actionName = null, Action<T> callback) { request.OnComplete((message) => { if(message.IsError) { if(string.IsNullOrEmpty(actionName)) actionName = "Unknown Oculus Request"; var error = message.GetError(); error.Log(actionName); // uses my own extension method for logging prettily return; } else { callback(message.Data); } }); } Either way, that's not important. But imagine that I have this nice wrapper around OnComplete that logs in case of failure, and calls my callback in case of a success. This works most of the time. But... let's say that I am in a Solo Room. In that case, calling UpdateDataStore works just fine. It returns a Request, with Request ID 0. My code has been working just fine, and I schedule my callback. But... apparently, it was an error. What's the point of updating the datastore in a solo room if there's nobody to hear it? And because that request was never meant to happen, it doesn't return a proper Request that will return an Error in the Message. It just... is scheduled as Request ID 0, and it will never, ever, ever pop off the stack. It just sits there. Now, when a notification comes in - any notification at all, they all technically have Request ID 0. They will attempt to attempt to fire the callback for my "successfully updated the datastore" but it will error out during the cast, and log an error on line 142 of Callback.cs (Debug.LogError("Unable to handle message: ")... as ------------------------- Repro: 1. Schedule a notification callback for some regular repeating notification. 2. Call UpdateDataStore in a solo room and schedule the OnComplete callback. 3. The callback will never fire. 4. When the next Notification that comes in, it will try to fire that callback and error out, meaning that your notification callback will not get called. -------------------------- I use UpdateDataStore here as an example, but I've seen it happen in a number of other cases, for example, if you call Rooms.Get(currentRoomId).OnComplete(...), where your currentRoomId is 0 (solo room), it will return a proper Request with RequestID = 0 , that will never get called, and trigger this. I had some logic that refreshed the current room in certain conditions, and noticed that it was causing the same issue. Clearly, I should've used GetCurrent, but the point still stands, that I would have rather gotten an error in the callback, rather than a silent no-op that never triggers, and causes me to have intermittent broken failures. The fix on the Oculus side should be pretty easy. You guys need to either: a) Handle the case where the Request ID is 0 and not schedule it. b) Process notifications before processing requests in HandleMessage c) Not return requests with id = 0, but schedule proper requests with an error so that people can know what they are doing wrong. d) Change Notifications to have RequestId = -1 (which won't work since you're using ulongs for the request ID). e) Force all users to check every request that ever triggers to see if it is 0, and not actually schedule the callback in that case. (What I did on my end using an extension method). TLDR: As it currently stands, any time the Oculus Platform API calls returns a Request/Request<T> with an ID of 0, the next notification message will be swallowed up and not fired in the application which will cause indeterminate errors. I've handled it on my end, but this might cause tons of problems for other people running into intermittent notification disappearances.918Views3likes0CommentsGearVR In-App purchase error
We caught an issue in our game “Sammy in VR” for GearVR. After release our IAP has been stopped working. This IAP has very simple architecture: it just remove all ads forever after purchasing. The game developed on Unity 5.5.1p3, so we use oculus sdk for Unity. Error description: The purchase begins, then user enters pin code, purchase completes and user returns to the game. In the same time the game receives from Oculus answer with error code “PurchaseError: Oculus.Platform.MessageWithPurchase”. Moreover, we could not collect logs from the release version due to Oculus Remote Debug Tool closes the game after connection every time. That is why it is impossible to fix the issue without your advices. Would you please help us and suggest some solutions?709Views1like1Comment[SOLVED] Oculus Overlay Callback/ Notification?
Hi, Just move to the new platform SDK (1.9.0) and set up the LaunchInvitableUserFlow(). However when the overlay activates the input is still being sent to the game. I think this is because the game needs to run in background so is not paused when the overlay activates and the input is being read. What I am wondering is if there is a callback or notification that is triggered when the Oculus overlay shows/ dismisses?Solved1.2KViews0likes2CommentsVoIP tell if other connections are muted/ not talking
Hi, I am implementing the platform VoIP feature and have put in push-to-talk (through 'Voip.SetMicrophoneMuted()'). However I need a way of telling if other users currently have them selves muted or not. I need to know this so I know when to show their name with an icon next to it while they are talking. Does the current system using 'VoipAudioSourceHiLevel' have a way of telling this or will I have to make a work around?565Views0likes0Comments[REOPENED] Oculus Platform - Invite user to room
Hi, I am trying to implement the oculus platform room feature and am wanting to know what happens after calling Oculus.Platform.Rooms.InviteUser("the rooms ID","the invite token for that user"); The callback for this is being received by the sender but am not sure what I need to do to get the information on the invited users end. Can anyone please tell me what I need to do to get the invite on the other end?2.1KViews0likes6CommentsOculus microphone and Unity
Hi, I am currently trying to get audio input from the Oculus microphone through the Oculus Platform in unity but am not sure if it is possible. I think it is possible because of the information on this webpage but am unable to find it in unity. Can someone please help?Solved2.4KViews0likes2Comments