gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 19:37:03 28 4
gpt4 key购买 nike

我已经在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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com