0 votes
by (190 points)
recategorized by

我们做行业应用,需要用户无感更新app,目前可以做到自动安装apk,但系统会出现安装提示,无法做到静默安装。pico rom是否有方法能够做到无root下静默安装apk,或者是能否通过系统级签名来实现

1 Answer

+1 vote
by (55.5k points)

您好,请问一下您是用什么引擎以及Pico SDK开发的app。
如果使用的是Unity和Pico XR Platform SDK所开发,您可以使用以下方法,链接如下:
https://sdk.picovr.com/docs/XRPlatformSDK/Unity/cn/chapter_seven.html#controlappmanger
注意:调用以下接口需要在manifest里添加以下标签,添加此标签后无法上架Pico Store。

如果使用的是Unity和PicoVR Unity SDK所开发,您可以使用以下方法,链接如下:
http://sdk.picovr.com/docs/UnitySDK/cn/chapter_seven.html#upvr-controlappmanger
注意:调用以下接口需要在manifest里添加以下标签,添加此标签后无法上架Pico Store。

如果使用的是Unreal Engine 4和Pico Unreal Engine 4 SDK所开发,您可以使用以下方法,链接如下:
https://sdk.picovr.com/docs/UnrealSDK/cn/chapter_six.html#id6
注意: 接口为受保护接口,调用以下接口前,需要在项目设置->插件->PicoMobile中勾选“Use Pico Advance Interface”选项。 勾选了该选项后,App将无法上架Pico Store,如果您的应用需要通过Pico Store分发,请勿勾选“Use Pico Advance Interface”选项和使用以下接口。

by (190 points)

感谢您的回复,我使用的是Unity和PicoVR Unity SDK,测试设施是pico g2 4k
按照您的提示没有效果,回调也没有执行,代码和manifest如下:

Pvr_UnitySDKAPI.ToBService.UPvr_InitToBService();
Pvr_UnitySDKAPI.ToBService.UPvr_SetUnityObjectName(name);
Pvr_UnitySDKAPI.ToBService.UPvr_BindToBService();
Pvr_UnitySDKAPI.ToBService.UPvr_ControlAPPManger(PBS_PackageControlEnum.PACKAGE_SILENCE_INSTALL, path, i => {
            Debug.Log("install state:" + i);//此处没有执行
        });

enter image description here

by (920 points)

PvrUnitySDKAPI.ToBService.UPvrBindToBService();
PvrUnitySDKAPI.ToBService.UPvrControlAPPManger(PBSPackageControlEnum.PACKAGESILENCE_INSTALL, path, i => {
Debug.Log("install state:" + i);
这两个代码之间隔几帧在执行试试,可能是bind没有完成导致的。

by (190 points)

加了延迟1秒,安装倒是成功了,但是回调信息还是没有打印出来

by (55.5k points)

您好,关于回调的问题我们会反馈给研发。

by (55.5k points)

您好,如果您要回调的话,您需要加入如下代码:

private void IntCallback(string callBack)
{

    Debug.Log("InstallCallBackSuccess");
}

注意:函数名不能更改。

调用时的第三个参数需要传入 null。

Pvr_UnitySDKAPI.ToBService.UPvr_ControlAPPManger(Pvr_UnitySDKAPI.PBS_PackageControlEnum.PACKAGE_SILENCE_INSTALL, "/storage/emulated/0/Download/Test.apk", null);
by (190 points)

可以了,谢谢!

by (190 points)

你好,今天遇到另一个问题;
之前是a程序安装b程序的apk,是可以的;
现在用a程序安装a程序的apk没有安装成功,callback里参数值为2

by (55.5k points)

开发者您好,
callback参数2代表的是没有权限,请检查manifest是否添加权限,
我们的测试人员进行测试,静默安装功能是正常的,a程序可以安装a程序。

public void AppManager()
    {
        Pvr_UnitySDKAPI.ToBService.UPvr_ControlAPPManger(Pvr_UnitySDKAPI.PBS_PackageControlEnum.PACKAGE_SILENCE_INSTALL, "/storage/emulated/0/Download/Test.apk", AppManagerCallBack);
    }
...