Linking to a LC desktop app with a URL

Peter Bogdanoff bogdanoff at me.com
Thu May 21 02:09:52 EDT 2020


This is great! Thank you Trevor!


> On May 20, 2020, at 5:01 PM, Trevor DeVore via use-livecode <use-livecode at lists.runrev.com> wrote:
> 
> On Wed, May 20, 2020 at 5:12 PM Peter Bogdanoff via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> 
>> Has anyone worked on the idea of accessing a LiveCode application from a
>> web browser, such as happens with Zoom? With a URL link to a zoom.us
>> page, the webpage shows a dialog:
>> 
>> “Do you want to allow this page to open ‘zoom.us’?”
>> 
>> which then opens the local app zoom.us.
>> 
>> My use for this would be for enabling a user using an online LMS (learning
>> management system) to directly access a location in my application on their
>> local machine.
>> 
>> I see a few methods described online, but was wondering if anyone has
>> experience with this.
>> 
> 
> ScreenSteps uses this technique for sending actions from our web app to our
> desktop. Extensive testing has been done on macOS and Windows. The Levure
> framework has the file_system helper which does most of the work for you
> on Windows, macOS, and iOS so you can look at that code for guidance. You
> can find the source code at the link below. I will link to specific code
> examples below as well.
> 
> https://github.com/trevordevore/levure/tree/develop/framework/helpers/file_system
> 
> There are three parts that make up a working solution - registration,
> processing requests, and triggering requests. Here is a description of
> each. Hopefully I'm not missing anything. I coded this a long time in
> Levure and haven't had to think about it much since.
> 
> 1. Tell the operating system your app can handle a url protocol.
> 
> ## Windows
> 
> You will need to modify the registry. Here is a link to the command that
> updates the registry in the file_system helper:
> https://github.com/trevordevore/levure/blob/develop/framework/helpers/file_system/file_system.livecodescript#L193
> 
> The command uses levureStandaloneFilename(), a framework function that
> returns the full path to the standalone application. Just replace that with
> a similar function so that you can add the full path to your app to the
> registry.
> 
> This command can be called each time your application launches if you want
> to make sure that the version the user just launched is the one the OS will
> send a url request to.
> 
> ## macOS and iOS
> 
> Add the URL protocol you want to add to your Info.plist file. It will look
> something like this (taken from the ScreenSteps Info.plist file) :
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "
> http://www.apple.com/DTDs/PropertyList-1.0.dtd">
> <plist version="1.0">
> <dict>
> ... OTHER STUFF
>  <array>
>    <dict>
>      <key>CFBundleURLName</key>
>      <string>ScreenSteps URL</string>
>      <key>CFBundleURLSchemes</key>
>      <array>
>        <string>x-screensteps-app</string>
>        <string>screensteps</string>
>        <string>screensteps-4</string>
>      </array>
>    </dict>
>  </array>
> </dict></plist>
> 
> 2. Process URL requests sent by the OS to your app
> 
> ## Windows
> Process `relaunch` command, extract command line arguments looking for url.
> 
> `relaunch` is handled within main Levure script:
> https://github.com/trevordevore/levure/blob/develop/framework/levure.livecodescript#L46
> 
> The file_system helper processes the parameters though:
> https://github.com/trevordevore/levure/blob/develop/framework/levure.livecodescript#L46
> 
> ## macOS
> Process the appleEvent with pClass "GURL" AND pID "GURL".
> 
> https://github.com/trevordevore/levure/blob/develop/framework/helpers/file_system/file_system.livecodescript#L111
> 
> ## iOS
> Process `urlWakeUp`.
> 
> https://github.com/trevordevore/levure/blob/develop/framework/helpers/file_system/file_system.livecodescript#L65
> 
> 3. Triggering requests
> 
> Triggering requests is as simple as using your custom protocol in an <a>
> tag in your web page.
> 
> <a href="screensteps://some/information/for/desktop/to?parse=1">Click me</a>
> 
> Hopefully this helps you implement the behavior in your own app.
> 
> -- 
> Trevor DeVore
> ScreenSteps - https://www.screensteps.com
> Levure App Framework for LiveCode - https://github.com/trevordevore/levure/
> LiveCode Repos -
> https://github.com/search?q=user%3Atrevordevore+topic:livecode
> LiveCode Builder Repos -
> https://github.com/search?q=user%3Atrevordevore+topic:livecode-builder
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list