Jump to content

Hollowhead

Verified Members
  • Posts

    42
  • Joined

  • Last visited

Reputation

0 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Yes, I received your e-mail. told me what I was doing wrong but did not offer any suggestions. The documentation is sparse, but I think I stumbled my way through to the solution. I implemented the code as follows: using System.Collections;using System.Collections.Generic;using UnityEngine;using Viveport;public class VivePortDRMChecker : MonoBehaviour{ static string VIVEPORT_ID = ""; static string VIVEPORT_KEY = ""; // Use this for initialization void Start() { Api.Init(InitStatusHandler, VIVEPORT_ID); } private static void InitStatusHandler(int nResult) { Viveport.Core.Logger.Log("Init(): " + nResult); if (nResult != 0) { Viveport.Core.Logger.Log("Init setup error ..."); // Handle error Api.Shutdown(ShutdownHandler); } Api.GetLicense(new MyLicenseChecker(), VIVEPORT_ID, VIVEPORT_KEY); } class MyLicenseChecker : Api.LicenseChecker { public override void OnSuccess(long issueTime, long expirationTime, int latestVersion, bool updateRequired) { Viveport.Core.Logger.Log("[MyLicenseChecker] issueTime: " + issueTime); Viveport.Core.Logger.Log("[MyLicenseChecker] expirationTime: " + expirationTime); Viveport.Core.Logger.Log("[MyLicenseChecker] latestVersion: " + latestVersion); Viveport.Core.Logger.Log("[MyLicenseChecker] updateRequired: " + updateRequired); // Do more things } public override void OnFailure(int errorCode, string errorMessage) { Viveport.Core.Logger.Log("[MyLicenseChecker] errorCode: " + errorCode); Viveport.Core.Logger.Log("[MyLicenseChecker] errorMessage: " + errorMessage); Api.Shutdown(ShutdownHandler); } } private static void ShutdownHandler(int nResult) { Viveport.Core.Logger.Log("Shutdown(): " + nResult); if (nResult != 0) { // Handle error Viveport.Core.Logger.Log("Shutdown error ..."); Application.Quit(); } // Do something // Do more things Application.Quit(); } } I don't know if this is accurate. I don't know how to test it to make it fail. When I tried to make it fail by putting the wrong key in I received a strange error message and the app failed to shutdown. I suspect my test is not the proper way to test the failure. Should I submit the apk with the code above? Is there anyone at HTC that can provide further guidance? Thank you.
  2. Yes, it was helpful, and I think I correctly implemented the code for the app to quit when it hits onfailure as Yaking suggested, but he didn't suggest anything further. I do not know when this would occur in a real situation so I have no way of testing it. I don't know how a reviewer would test the apk. using System.Collections;using System.Collections.Generic;using UnityEngine;using Viveport;public class VivePortDRMChecker : MonoBehaviour{ static string VIVEPORT_ID = ""; static string VIVEPORT_KEY = ""; // Use this for initialization void Start() { Api.Init(InitStatusHandler, VIVEPORT_ID); } private static void InitStatusHandler(int nResult) { Viveport.Core.Logger.Log("Init(): " + nResult); if (nResult != 0) { Viveport.Core.Logger.Log("Init setup error ..."); // Handle error Api.Shutdown(ShutdownHandler); } Api.GetLicense(new MyLicenseChecker(), VIVEPORT_ID, VIVEPORT_KEY); } class MyLicenseChecker : Api.LicenseChecker { public override void OnSuccess(long issueTime, long expirationTime, int latestVersion, bool updateRequired) { Viveport.Core.Logger.Log("[MyLicenseChecker] issueTime: " + issueTime); Viveport.Core.Logger.Log("[MyLicenseChecker] expirationTime: " + expirationTime); Viveport.Core.Logger.Log("[MyLicenseChecker] latestVersion: " + latestVersion); Viveport.Core.Logger.Log("[MyLicenseChecker] updateRequired: " + updateRequired); // Do more things } public override void OnFailure(int errorCode, string errorMessage) { Viveport.Core.Logger.Log("[MyLicenseChecker] errorCode: " + errorCode); Viveport.Core.Logger.Log("[MyLicenseChecker] errorMessage: " + errorMessage); Api.Shutdown(ShutdownHandler); } } private static void ShutdownHandler(int nResult) { Viveport.Core.Logger.Log("Shutdown(): " + nResult); if (nResult != 0) { // Handle error Viveport.Core.Logger.Log("Shutdown error ..."); Application.Quit(); } // Do something // Do more things Application.Quit(); } } Should I submit this code as is? Is there anybody at HTC that ...like...knows how to do this and confirm this is the approach I should take? Telling me what I'm doing wrong is sort of helpful. I want to know how to do it right and the documentation is pretty sparse. The documentation presents a half-finished example: https://developer.viveport.com/documents/sdk/en/api_drm.html
  3. I think I have the code properly implemented, but how do I test onfailure? I have the ShutdownHandler implemented correctly, or just Application.Quit(); if I don't want to use the ShutdownHandler. If I intentionally put the wrong key in, it gives me this error, but still proceeds with the log message of "Init(): 0": AndroidJavaException: java.lang.IllegalArgumentException: java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0000b9:ASN.1 encoding routines:OPENSSL_internal:WRONG_TAG
  4. David, I cannot access the devhelp system without being prompted to open a new ticket, which is something I do not want to do. Our communication is already difficult as it is without introducing more complexity. Is it your intention for me to open a new ticket on this, or is there already an open ticket which you are encouraging me to access?
  5. , Here is more accurate log information from my most recent APK. I didn't know how to make Viveport.Core.Logger.log messages appear in adb logcat previously. I have not heard from anyone at HTC as of Monday. Has review proceeded to the next step? [MyLicenseChecker] issueTime: 1554608644511 [MyLicenseChecker] expirationTime: 1555818244511 [MyLicenseChecker] latestVersion: 0 [MyLicenseChecker] updateRequired: False Is it safe to assume, based on this log information, that the DRM code has been correctly implemented?
  6. Yaking I sent you a longer logcat file directly to your e-mail. One of your associates already forwarded my problem to you. I can't find onfailure executing anywhere in my logcat file before I took off the HMD. I will do more testing tomorrow. When is onfailure supposed to execute?
  7. I can confirm the recent commits to the input utility program have fixed my problem: https://github.com/ViveSoftware/ViveInputUtility-Unity/commit/0bfddbc6acdb812572886352527e3e09b6391643
  8. There is one thing I noticed and that is the set of lines involving the following: Unable to start service Intent { cmp=com.htc.vpc/com.htc.store.licensing.LicensingService } U=0: not found I do not understand this aspect of the logcat. Could it be related to my problem?
  9. I am trying to submit an app to VivePort , for the Vive Focus., which the end-user must pay for, and this apparently requires some sort of DRM implementation, but the app is being rejected. I am not receiving any error messages in logcat, and I am following the instructions here: https://developer.viveport.com/documents/sdk/en/api_drm.html I updated the andoid manifest, and put in my scene a gameobject with the script which is exactly the same as "Detailed Example in Unity" but the app is still being declined. Supposedly the app is not supposed to start if this is done correctly, but it fully loads up on my Vive Focus. Here is a brief excerpt from the logcat file. "VivePortDRMChecker" is the name of the template file in my case: 04-04 11:55:01.254 4709 4729 E Unity : void Start() -- EXECUTED (public class ViveportDemo : MonoBehaviour) 04-04 11:55:01.254 4709 4729 E Unity : UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) 04-04 11:55:01.254 4709 4729 E Unity : UnityEngine.Logger:Log(LogType, Object) 04-04 11:55:01.254 4709 4729 E Unity : VivePortDRMChecker:Start() 04-04 11:55:01.254 4709 4729 E Unity : (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) 04-04 11:55:01.284 4709 4729 E Unity : private static void InitStatusHandler(int nResult) -- EXECUTED 04-04 11:55:01.284 4709 4729 E Unity : UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) 04-04 11:55:01.284 4709 4729 E Unity : UnityEngine.Logger:Log(LogType, Object) 04-04 11:55:01.284 4709 4729 E Unity : VivePortDRMChecker:InitStatusHandler(Int32) 04-04 11:55:01.284 4709 4729 E Unity : Viveport.Internal.AndroidPluginCallback:onResult(Int32, String) 04-04 11:55:01.284 4709 4729 E Unity : System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) 04-04 11:55:01.284 4709 4729 E Unity : System.Reflection.MethodBase:Invoke(Object, Object[]) 04-04 11:55:01.284 4709 4729 E Unity : UnityEngine.AndroidJavaProxy:Invoke(String, Object[]) 04-04 11:55:01.284 4709 4729 E Unity : UnityEngine._AndroidJNIHelper:InvokeJavaProxyMethod(AndroidJavaProxy, IntPtr, IntPtr) 04-04 11:55:01.284 4709 4729 E Unity : (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) 04-04 11:55:01.288 4709 4729 E Unity : Viveport.Core.Logger.Log -- EXECUTED 04-04 11:55:01.288 4709 4729 E Unity : UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) 04-04 11:55:01.288 4709 4729 E Unity : UnityEngine.Logger:Log(LogType, Object) 04-04 11:55:01.288 4709 4729 E Unity : VivePortDRMChecker:InitStatusHandler(Int32) 04-04 11:55:01.288 4709 4729 E Unity : Viveport.Internal.AndroidPluginCallback:onResult(Int32, String) 04-04 11:55:01.288 4709 4729 E Unity : System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) 04-04 11:55:01.288 4709 4729 E Unity : System.Reflection.MethodBase:Invoke(Object, Object[]) 04-04 11:55:01.288 4709 4729 E Unity : UnityEngine.AndroidJavaProxy:Invoke(String, Object[]) 04-04 11:55:01.288 4709 4729 E Unity : UnityEngine._AndroidJNIHelper:InvokeJavaProxyMethod(AndroidJavaProxy, IntPtr, IntPtr) 04-04 11:55:01.288 4709 4729 E Unity : 04-04 11:55:01.288 4709 4729 E Unity : (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) 04-04 11:55:01.288 4709 4729 E Unity : 04-04 11:55:01.319 1400 2184 W ActivityManager: Unable to start service Intent { cmp=com.htc.vpc/com.htc.store.licensing.LicensingService } U=0: not found 04-04 11:55:01.320 1400 2213 W ActivityManager: Unable to start service Intent { cmp=com.htc.vpc/com.htc.store.licensing.LicensingService } U=0: not found 04-04 11:55:01.328 1400 1797 W ActivityManager: Unable to start service Intent { cmp=com.htc.vpc.odm/com.htc.store.licensing.LicensingService } U=0: not found 04-04 11:55:01.328 1400 4771 W ActivityManager: Unable to start service Intent { cmp=com.htc.vpc.odm/com.htc.store.licensing.LicensingService } U=0: not found 04-04 11:55:01.349 1400 1672 W ActivityManager: Unable to start service Intent { cmp=com.htc.viveport.store/com.htc.store.licensing.LicensingService } U=0: not found 04-04 11:55:01.349 1400 2184 W ActivityManager: Unable to start service Intent { cmp=com.htc.viveport.store/com.htc.store.licensing.LicensingService } U=0: not found 04-04 11:55:01.351 4709 4729 E Unity : Api.GetLicense(new MyLicenseChecker(), VIVEPORT_ID, VIVEPORT_KEY); -- EXECUTED 04-04 11:55:01.351 4709 4729 E Unity : UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) 04-04 11:55:01.351 4709 4729 E Unity : UnityEngine.Logger:Log(LogType, Object) 04-04 11:55:01.351 4709 4729 E Unity : VivePortDRMChecker:InitStatusHandler(Int32) 04-04 11:55:01.351 4709 4729 E Unity : Viveport.Internal.AndroidPluginCallback:onResult(Int32, String) 04-04 11:55:01.351 4709 4729 E Unity : System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) 04-04 11:55:01.351 4709 4729 E Unity : System.Reflection.MethodBase:Invoke(Object, Object[]) 04-04 11:55:01.351 4709 4729 E Unity : UnityEngine.AndroidJavaProxy:Invoke(String, Object[]) 04-04 11:55:01.351 4709 4729 E Unity : UnityEngine._AndroidJNIHelper:InvokeJavaProxyMethod(AndroidJavaProxy, IntPtr, IntPtr) 04-04 11:55:01.351 4709 4729 E Unity : (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) 04-04 11:55:01.351 4709 4729 E Unity : Api.Init(InitStatusHandler, VIVEPORT_ID); -- EXECUTED 04-04 11:55:01.351 4709 4729 E Unity : UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) 04-04 11:55:01.351 4709 4729 E Unity : UnityEngine.Logger:Log(LogType, Object) 04-04 11:55:01.351 4709 4729 E Unity : 04-04 11:55:01.351 4709 4729 E Unity : (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) 04-04 11:55:01.811 4709 4729 E Unity : Material doesn't have a texture property '_MainTex' 04-04 11:55:01.811 4709 4729 E Unity : WaveVR_ControllerLoader:verifyControllerPrefab(GameObject) 04-04 11:55:01.811 4709 4729 E Unity : WaveVR_ControllerLoader:verifyControllerPrefab(GameObject) 04-04 11:55:01.811 4709 4729 E Unity : WaveVR_ControllerLoader:verifyControllerPrefab(GameObject) 04-04 11:55:01.811 4709 4729 E Unity : WaveVR_ControllerLoader:tryLoadModelFromRuntime(String, String) 04-04 11:55:01.811 4709 4729 E Unity : WaveVR_ControllerLoader:onLoadController(WVR_DeviceType) 04-04 11:55:01.811 4709 4729 E Unity : WaveVR_ControllerLoader:onDeviceConnected(Object[]) 04-04 11:55:01.811 4709 4729 E Unity : Event:Send(String, Object[]) 04-04 11:55:01.811 4709 4729 E Unity : WaveVR:UpdatePoses(WVR_PoseOriginModel, Boolean) 04-04 11:55:01.811 4709 4729 E Unity : <RenderLoop>c__Iterator0:MoveNext() 04-04 11:55:01.811 4709 4729 E Unity : UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) 04-04 11:55:01.811 4709 4729 E Unity : [ line 1220] 04-04 11:55:01.811 4709 4729 E Unity : (Filename: Line: 1220) 04-04 11:55:01.955 4709 4729 E Unity : The AssetBundle 'Unity' can't be loaded because another AssetBundle with the same files is already loaded. 04-04 11:55:01.955 4709 4729 E Unity : UnityEngine.AssetBundle:LoadFromFile(String) 04-04 11:55:01.955 4709 4729 E Unity : WaveVR_ControllerLoader:tryLoadModelFromRuntime(String, String) 04-04 11:55:01.955 4709 4729 E Unity : WaveVR_ControllerLoader:onLoadController(WVR_DeviceType) 04-04 11:55:01.955 4709 4729 E Unity : UnityEngine.GameObject:SendMessage(String, Object) 04-04 11:55:01.955 4709 4729 E Unity : HTC.UnityPlugin.VRModuleManagement.RenderModelCreator:UpdateRenderModel() 04-04 11:55:01.955 4709 4729 E Unity : UnityEngine.Events.UnityAction`2:Invoke(T0, T1) 04-04 11:55:01.955 4709 4729 E Unity : UnityEngine.Events.UnityAction`2:Invoke(T0, T1) 04-04 11:55:01.955 4709 4729 E Unity : HTC.UnityPlugin.Vive.Map:InternalMapping(Int32, UInt32) 04-04 11:55:01.955 4709 4729 E Unity : HTC.UnityPlugin.Vive.HandRoleHandler:MappingLeftRightHands() 04-04 11:55:01.955 4709 4729 E Unity : HTC.UnityPlugin.Vive.HandRoleHandler:OnConnectedDeviceChanged(UInt32, VRModuleDeviceClass, String, Boolean) 04-04 11:55:01.955 4709 4729 E Unity : HTC.UnityPlugin.Vive.Map:OnConnectedDeviceChanged(UInt32, VRModuleDeviceClass, String, Boolean) 04-04 11:55:01.955 4709 4729 E Unity : HTC.UnityPlugin.Vive.ViveRole:OnDeviceConnected(UInt32, Boolean) 04-04 11:55:01.955 4709 4729 E Unity : HTC.UnityPlugin.VRModuleManagement.VRModule:InvokeDeviceConnectedEvent(UInt32, Boolean) 04-04 11:55:01.955 4709 4729 E Unity : HTC.UnityPlugin.VRModuleManagement.VRModule:SendAllDevi 04-04 11:55:01.961 4709 4729 E Unity : The AssetBundle 'Unity' can't be loaded because another AssetBundle with the same files is already loaded. 04-04 11:55:01.961 4709 4729 E Unity : UnityEngine.AssetBundle:LoadFromFile(String) 04-04 11:55:01.961 4709 4729 E Unity : WaveVR_ControllerLoader:tryLoadModelFromRuntime(String, String) 04-04 11:55:01.961 4709 4729 E Unity : WaveVR_ControllerLoader:onLoadController(WVR_DeviceType) 04-04 11:55:01.961 4709 4729 E Unity : UnityEngine.GameObject:SendMessage(String, Object) 04-04 11:55:01.961 4709 4729 E Unity : HTC.UnityPlugin.VRModuleManagement.RenderModelCreator:UpdateRenderModel() 04-04 11:55:01.961 4709 4729 E Unity : UnityEngine.Events.UnityAction`2:Invoke(T0, T1) 04-04 11:55:01.961 4709 4729 E Unity : UnityEngine.Events.UnityAction`2:Invoke(T0, T1) 04-04 11:55:01.961 4709 4729 E Unity : HTC.UnityPlugin.Vive.Map:InternalMapping(Int32, UInt32) 04-04 11:55:01.961 4709 4729 E Unity : HTC.UnityPlugin.Vive.HandRoleHandler:MappingLeftRightHands() 04-04 11:55:01.961 4709 4729 E Unity : HTC.UnityPlugin.Vive.HandRoleHandler:OnConnectedDeviceChanged(UInt32, VRModuleDeviceClass, String, Boolean) 04-04 11:55:01.961 4709 4729 E Unity : HTC.UnityPlugin.Vive.Map:OnConnectedDeviceChanged(UInt32, VRModuleDeviceClass, String, Boolean) 04-04 11:55:01.961 4709 4729 E Unity : HTC.UnityPlugin.Vive.ViveRole:OnDeviceConnected(UInt32, Boolean) 04-04 11:55:01.961 4709 4729 E Unity : HTC.UnityPlugin.VRModuleManagement.VRModule:InvokeDeviceConnectedEvent(UInt32, Boolean) 04-04 11:55:01.961 4709 4729 E Unity : HTC.UnityPlugin.VRModuleManagement.VRModule:SendAllDevi 04-04 11:55:02.478 4709 4849 E Unity : MyLicenseChecker > public override void OnSuccess -- EXECUTED 04-04 11:55:02.478 4709 4849 E Unity : UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) 04-04 11:55:02.478 4709 4849 E Unity : UnityEngine.Logger:Log(LogType, Object) 04-04 11:55:02.478 4709 4849 E Unity : MyLicenseChecker:OnSuccess(Int64, Int64, Int32, Boolean)
  10. I also meant to write: "Releasing the touchpad button on controller would teleport the user to that location." Not: "Releasing the controller would teleport the user to that location." I was afraid to edit my post again for fear of it being deleted...again.
  11. I meant to write in the earlier post: When the plugin is updated to 1.10.3 and the user selects the "left hand" as their dominant hand in the Vive Focus settings and the user tries to play an app with the ControllerManagerSample scene the teleport and laser functionality does not work. I did not intend to write 1.20.2, but I could not fix the post without that change, and other changes being removed.
  12. I have been using this forum for about 2 months and I've noticed a quirk in the rules governing spam. Making edits to previously published posts often results in the post being flagged as spam and removed. I believe a user of this forum should be allowed to edit their post as many times as possible. This will improve communication between the participants of this forum.
×
×
  • Create New...