使用Instant应用程序连接到本地IP地址

时间:2017-10-07 01:00:38

标签: android android-instant-apps

我正在编写一个即时应用程序,它将连接到本地IP网络上的设备。即时应用程序有一个限制,他们必须通过HTTPS FAQ连接到网络。这显然不适用于设备,因为我们没有获得本地IP地址的SSL证书。 为避免这种情况,是否可以打开到本地设备的直接TCP套接字或IP连接?

我们确实尝试打开直接TCP套接字,但无法在Instant app中连接(相同的代码在已安装的应用中运行正常)。

1 个答案:

答案 0 :(得分:0)

即时应用需要在targetSandboxVersion=”2”标记中设置<manifest>属性。针对v2沙箱的应用的默认网络安全配置会限制明文网络流量:

<base-config cleartextTrafficPermitted="false">
  <trust-anchors>
      <certificates src="system" />
  </trust-anchors>
</base-config>

然而,NetworkSecurityPolicy javadoc声明:

  

当不允许使用明文网络流量时,平台即可   组件(例如HTTP和FTP堆栈,DownloadManagerMediaPlayer)   将拒绝此流程使用明文流量的请求。   强烈建议第三方图书馆遵守此设置   好。

     

这个标志在尽力而为的基础上得到尊重,因为它是不可能的   防止来自Android应用程序的所有明文流量   提供给他们的访问级别。例如,没有期望   Socket API将尊重此标志,因为它无法确定   它的流量是否是明文。但是,大多数网络流量   应用程序由更高级别的网络堆栈/组件处理   这可以尊重政策的这一方面。

从技术角度来看,我在这里看不到问题,但您通过Android Instant Apps policy文件进一步限制,该文件指明:

  

即时应用内的网络流量必须使用a加密   像HTTPS这样的TLS协议。

可以看出,只要在其上使用TLS,策略就不会禁止使用TCP协议。