Jump to content

Dave Nottage

Members
  • Content Count

    1546
  • Joined

  • Last visited

  • Days Won

    36

Everything posted by Dave Nottage

  1. Apparently it's because Indy does not have SSL bindings for encryption on iOS. See this issue. Perhaps @Remy Lebeau can comment.
  2. Why do you need to send push messages from an iOS device? It's a very bad idea to have private key info in an iOS app. In a web server (where messages should be sent from), the executable (and private key) is (or at least should not be) accessible externally. From here: https://github.com/firebase/firebase-ios-sdk/releases/download/CocoaPods-6.28.0/Firebase.zip ..but the code example above which sends messages does not require the iOS SDK, which is used for receiving messages.
  3. If they're actual issues, I'd rather them being reported here. I'm sure it's perfectly alright to ask questions in this forum, though.
  4. A follow-up to this: I have contacted their support team, who requested that I provide a video demonstrating the problem 🙄. I have since replied, asking them if they really are incapable of doing two simple steps (Using Windows: download, and try to open) to replicate it themselves.
  5. Both unzip OK on macOS, so I tried to "re-zip" the 11.2.0 version on Windows, but that causes Explorer to crash 😞 I've asked a question about it in their Slack workspace, since all the other reporting mechanisms don't seem to cover this category.
  6. There's this link at this page, however it might just be a redirect to the latest version (11.3.0) I notice a huge difference in size between 11.2.0 and 11.3.0 - 319MB vs 612MB!!
  7. Dave Nottage

    Devices not compatible GooglePlay

    What is the exact message from Play Store? Seems rather odd. Both of those ship with Android 12 - do they both have Android 12 now?
  8. See this documentation. Authorization is now via an OAuth2 token - there is a link in the documentation to details about methods for obtaining the token.
  9. Dave Nottage

    Shellexecute @ UBUNTU platform

    For anyone else coming across this link, it has moved to: https://chapmanworld.com/calling-linux-commands-from-delphi/
  10. Dave Nottage

    Problem using Kastri PDFControl

    It might help to show the code you're using.
  11. Dave Nottage

    Problem using Kastri PDFControl

    Sounds like you already worked that out? i.e. create the PDF control beforehand.
  12. Dave Nottage

    Anyone using Clever Components?

    Sergey pushed a change to this repo 2 months ago, so he was doing something. It's a shame if they're not responding to customers.
  13. This part will not even compile. TControl does not have a Handle property in FMX. Nor will this. setContentDescription takes a JCharSequence as the parameter. The main problem is that "non-native" FMX controls do not have an underlying native control, except when ControlType is Platform. Even then, there is no support for calling setContentDescription on that native control. This would require adding a ContentDescription property to TControl so that it can be passed to the underlying "native" controls. On top of this, only certain controls on Android support ControlType of Platform.
  14. Dave Nottage

    Mouse cursor

    The jar is not added to the search paths, it's added to the Libraries node of the Android 32-bit target, as per the demo readme. This is an image (which has been shortened, for brevity) of it: You don't add those paths. See above.
  15. Dave Nottage

    Mouse cursor

    It's definitely in the repo. https://github.com/DelphiWorlds/Kastri/blob/58569bee28f5ce3caf5ceef588a46d13c161ce62/Features/JavaScript/DW.JavaScript.pas#L20 Did you add DW.JavaScript to the uses clause, as per the demo?
  16. Dave Nottage

    Problem using Kastri PDFControl

    That now fails for me in Delphi 12.2 😞 Rollo's example, i.e.: TabControl1.SetActiveTabWithTransition(TabItem1, TTabTransition.Slide, TTabTransitionDirection.Normal); TThread.ForceQueue(nil, procedure begin FPDFControl.LoadPDF(LFileName); end); Works ok for me in Delphi 12.2
  17. Dave Nottage

    Mouse cursor

    The demo shows all the required folders in the Search path of Project Options. For that identifier you'd be missing the Features\JavaScript folder of Kastri
  18. Dave Nottage

    Mouse cursor

    I discovered what the problem is: The "default" TWebBrowser implementation for Android uses loadUrl: procedure TAndroidWebBrowserService.EvaluateJavaScript(const AJavaScript: string); begin FWebView.loadUrl(StringToJString('javascript:' + AJavaScript)); UpdateContentFromControl; end; Which I guess does not accept the JavaScript that I provided. In TWebBrowserExt, it uses the evaluateJavascript method: procedure TPlatformWebBrowserExt.ExecuteJavaScript(const AJavaScript: string; const AHandler: TJavaScriptResultProc); begin if FWebView <> nil then FWebView.evaluateJavascript(StringToJString(AJavaScript), CreateValueCallback(AHandler)) else AHandler(cJavaScriptNullResult, -1); end; Which does work. I've now added a demo to the HowTo repository, which uses TWebBrowserExt, and it works on Android (as well as iOS and macOS)
  19. Dave Nottage

    Mouse cursor

    It appears Android's WebView does not like part of the JavaScript (it works on macOS and iOS). I'm looking into it
  20. Dave Nottage

    Mouse cursor

    Not sure why it's not working for you - I'm using the same URL as in your example. I could put together a minimal test case to demonstrate it.
  21. Dave Nottage

    D12 TItemClickEvent undeclared identifier

    Please post a reproducible example.
  22. Dave Nottage

    Mouse cursor

    Updated JavaScript: cJavaScriptClickAtXY = '(function() {'#13#10 + 'var windowX = %d, windowY = %d'#13#10 + 'let x = windowX - (window.scrollX || window.pageXOffset)'#13#10 + 'let y = windowY - (window.scrollY || window.pageYOffset);'#13#10 + 'var element = document.elementFromPoint(x, y);'#13#10 + 'while (element) {'#13#10 + ' if (element.tagName !== "A" && !element.hasAttribute("onclick"))'#13#10 + ' element = element.parentElement;'#13#10 + ' else'#13#10 + ' break;'#13#10 + '}'#13#10 + 'if (element) {'#13#10 + ' var clickEvent = document.createEvent("MouseEvents");'#13#10 + ' clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, x, y, false, false, false, false, 0, null);'#13#10 + ' element.dispatchEvent(clickEvent);'#13#10 + '} else'#13#10 + ' console.log("No clickable element found at coordinates:", x, y);'#13#10 + '})()';
  23. Dave Nottage

    Mouse cursor

    I think it may be that the click is being invoked on the span, or the image (i): <li> <a href="https://en.delphipraxis.net/forum/28-fmx/"> <span>FMX <i class="fa fa-angle-right"></i></span> </a> </li> When it needs to be on the anchor (a) element, so I'll need to tweak the JavaScript a bit.
  24. Dave Nottage

    Mouse cursor

    const cJavaScriptClickAtXY = '(function() { '#13#10 + 'var windowX = %d, windowY = %d'#13#10 + 'let x = windowX - (window.scrollX || window.pageXOffset)'#13#10 + 'let y = windowY - (window.scrollY || window.pageYOffset);'#13#10 + 'var element = document.elementFromPoint(x, y);'#13#10 + 'if (element) {'#13#10 + ' var clickEvent = document.createEvent("MouseEvents");'#13#10 + ' clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, x, y, false, false, false, false, 0, null);'#13#10 + ' element.dispatchEvent(clickEvent);'#13#10 + '} else'#13#10 + ' console.log("No element found at coordinates:", x, y);'#13#10 + '})()'; // Example call: WebBrowser1.EvaluateJavaScript(Format(cJavaScriptClickAtXY, [Cursor_Position_X, Cursor_Position_Y])); The code above should do what you want - it has had very limited testing in my environment
  25. Dave Nottage

    Mouse cursor

    That's not a complete example, and obviously not Windows, so I'm not sure why you felt the need to add a unit that requires Windows.
×