ios - 如何通过IPv6正确打开网址?

标签 ios delphi url delphi-10.2-tokyo

我已经在iOS和Android应用程序中编写了一个函数来打开URL。我相信该代码将因未通过IPv6连接而被iTunes Connect拒绝。

通过Delphi构建此函数时,还会引发错误:

错误地址00000001017C4334发生访问冲突。 (访问地址000000000000000时)

我正在Indel 10上使用Delphi 10.2.3 Tokyo。

如何解决此错误?我的代码如下:

Procedure OpenGoogleForm; 
Var
  ipversion : String; 
Begin 
  //  For IPv6 
  IdTCPClient1.IPVersion:=Id_IPv4;  // <--  try IPv4 first 
  IdTCPClient1.Host:=MY_IP; 
  try 
    IdTCPClient1.Connect; 
    result:=true; 
    ipversion := 'IPv4';      // <-- will tell us what ip version to use 
  except 
  end; 

  if IdTCPClient1.Connected=false then 
  begin 
    try 
      IdTCPClient1.IPVersion:=Id_IPv6;  // <--  now try IPv6 
      IdTCPClient1.Connect; 
      result:=true; 
      ipversion:='IPv6';    // <-- will tell us what ip version to use 
      except 
    end; 
  end; 

  //  open url 
  {$IFDEF ANDROID} 
  Intent := TJIntent.Create; 
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);

  Intent.setData(StrToJURI('https://docs.google.com/forms/xxxx')); 
  SharedActivity.startActivity(Intent); 
  {$ENDIF} 

  {$IFDEF IOS} 
  SharedApplication.openURL(StrToNSUrl('https://docs.google.com/forms/xxxx')); 
  {$ENDIF} 

End; 

最佳答案

该错误消息告诉您正在访问nil指针,因此您需要进行查找。

但是,根本没有理由在打开URL之前执行手动TCP检查。您正在生成一个外部应用程序以打开URL,因此请让该应用程序根据需要处理连接错误。特别是因为如果两个Connect()调用均失败,则无论如何都要继续打开URL。因此,只需从您的过程中完全删除TIdTCPClient,它就不属于那里。那可能就是您的nil指针的来源。

procedure OpenGoogleForm; 
begin 
  {$IFDEF ANDROID} 
  Intent := TJIntent.Create; 
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setData(StrToJURI('https://docs.google.com/forms/xxxx')); 
  SharedActivity.startActivity(Intent); 
  {$ENDIF} 

  {$IFDEF IOS} 
  SharedApplication.openURL(StrToNSUrl('https://docs.google.com/forms/xxxx')); 
  {$ENDIF} 
end; 

关于ios - 如何通过IPv6正确打开网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51643713/

相关文章:

ios - 如何将 W3C 日期 XML 转换为 NSDate iOS

Delphi VirtualTreeView在需要重绘时获取绘图 Canvas

delphi - 单个 TIdHTTPServer 组件可以同时处理 http 和 https 请求吗?

delphi - 如何向表单添加自定义属性

php - 使用屏蔽 URL 预填充表单

algorithm - 当我只能使用数据库 ID 时,为什么要对 URL 缩短器使用长算法

ios - 使用指针的简单函数会导致内存错误

iOS TestFlight 构建通知电子邮件反复未收到

php - 重定向后我想要我输入的网址

ios - TextInpout 自动更正在 ios 中显示相反 [react native]