Opening URL within ios application

泪湿孤枕 提交于 2019-12-18 08:46:32

问题


I need to open a webpage with safari in my iOS application.
With XE2 there was iphoneall unit, which exposed UIApplication. XE4 doesn't use FPC anymore, so I can't use that.
Embarcadero documentation says I can use SDKs only with C++ or using delphi interfaces (and still, macapi is for OSX only, not iOS). So, it seems that there is no interface for UIKit framework?!
Another solution I tried was:

_system('open http://www.google.com');

But that had no affect at all!
Is there any other ways to open urls or am I out of luck to accomplish it?
I know there is TWebBrowser component for ios, but I wouldn't want to take that road just to display a webpage.


回答1:


By chance, someone at Embarcadero posted a code snippet to do exactly this two days ago.

If you are using XE4, look in the Samples, and you can find one (sorry, not sure of the name) where the final code is:

OpenURL('http://www.embarcadero.com');

This uses the XE4 FireMonkey framework and a class helper written by David Clegg, available in the sample.

If you are using an older version of FireMonkey, you can use the rather more cumbersome code:

function SharedApplication: UIApplication;
begin
  Result := TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  SharedApplication.openURL(TNSURL.Wrap(TNSURL.OCClass.URLWithString(NSSTR(PChar(String('http://www.embarcadero.com'))))));
end;

(Attribution: Code snippets all copied from the linked blog post.)

There is also a very old forum post from the early days of FireMonkey showing how to tackle these problems in general (basically, string <-> NSString <-> NSURL), and while it's a bit out of date - as you can see by the above code, FireMonkey has matured greatly - it may give some insight into the underlying reason for the code.



来源:https://stackoverflow.com/questions/16354876/opening-url-within-ios-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!