Hello Vuforia,
I am a licensed user of your SDK and below is one serious problem I have with your Cloud Target Finding API(s),
- My application has a valid working vuforia database set up.
- Upon scanning and calling your cloud target finder API, Vuforia SDK DOES NOT CONSISTENLY update on encountering ERRORS.
As you may see the below method defines (our application code) an implementation for all the error codes (TargetFinder.UpdateState enum values), but rarely Vuforia SDK returns callback on errors. We found this by placing logs inside the below method.
public void OnUpdateError(TargetFinder.UpdateState updateError) { Debug.LogError("OnUpdateError - " + updateError.ToString()); mErrorOccurred = true; switch (updateError) { case TargetFinder.UpdateState.UPDATE_ERROR_AUTHORIZATION_FAILED: mErrorMsgs = "Oops! I’m not able to recognize any more. It is expired."; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); break; case TargetFinder.UpdateState.UPDATE_ERROR_NO_NETWORK_CONNECTION: mErrorMsgs = "Oops! I need internet connection. Please turn it on"; //mErrorMsgs = "No internet connection please try again"; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); break; case TargetFinder.UpdateState.UPDATE_ERROR_PROJECT_SUSPENDED: //mErrorMsgs = "The cloud recognition service has been suspended"; mErrorMsgs = "Ouch! Cloud service has been suspended"; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); break; case TargetFinder.UpdateState.UPDATE_ERROR_REQUEST_TIMEOUT: // mErrorMsgs = " Internet connection is slow, please try again"; mErrorMsgs = "hm! I need a faster network. Could you provide a faster network please."; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); mErrorOccurred = false; break; case TargetFinder.UpdateState.UPDATE_ERROR_SERVICE_NOT_AVAILABLE: // mErrorMsgs = "The service is unavailable, please try again later."; mErrorMsgs = "Sorry! Appears our service may not be available, try again."; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); break; case TargetFinder.UpdateState.UPDATE_ERROR_TIMESTAMP_OUT_OF_RANGE: // mErrorMsgs = "Please update the date and time and try again."; mErrorMsgs = " hm! Can you check with latest date and time."; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); break; case TargetFinder.UpdateState.UPDATE_ERROR_UPDATE_SDK: mErrorMsgs = "Ouch! The application is using an unsupported version."; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); break; case TargetFinder.UpdateState.UPDATE_ERROR_BAD_FRAME_QUALITY: mErrorMsgs = "hm! I need a faster network. Could you provide a faster network please."; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); break; case TargetFinder.UpdateState.UPDATE_NO_MATCH: mErrorMsgs = "Oops! No Target Found!"; mErrorMsgs=ResolveTextSize(mErrorMsgs,30); break; }
}
Why is this so? Are we missing anything? This shortcoming or innosense is impacting our users/customers/business plans. We need vuforia SDK to call OnUpdateError consistenly THEREFORE ENABLING US to see if the target is found in the database or any relvant errors. If the target is not found in could we have AN ENTIRELY DIFFERENT APPLICATION FLOW that our users want.
Looking forward for a response.
Thanks,
Narayan