I took the leap into LTI for the purpose of exposing additional SIS integration tools and custom reports for faculty.
So my initial cartridge XML contained a <blti:launch_url> pointing to my default web page, and I had a single extension entry for the toolkit <lticm:options name="course_navigation"> pointing to the same URL as the launch_url.
This worked perfectly.
My next goal was to understand how to pass a grade back to the gradebook, so I created a custom assignment in the same domain as my toolkit, and tried to create a new extension for the <lticm:options name="homework_submission"> entry. I pointed <lticm:property name="url"> to the URL of my custom assignment, re-installed my config, and voila, I had a custom assignment type to choose from. Unfortunately it launched to <blti:launch_url>, which was unexpected, I mean, what is the point of the <lticm:property name="url"> property if it's ignored, right?
So for testing purposes, i.e. I wanted to continue testing my custom assignment and confirm it was properly posting the grade, I updated the <blti:launch_url> to point to my custom assignment, re-installed my app, and boom, I was able to create an assignment using my custom assignment, and grades posted back to the gradebook properly. Yay : )
At this point, just for fun, I clicked on the toolkit from the menu option...low and behold it launched!
So the <blti:launch_url> works as expected for the "course_navigation", but not for the "homework_submission"?
Here is a sample to illustrate how the XML was defined:
I am not at all sure I would do this in production, it feels very "hackish", and I haven't spent a lot of time testing additional variations. But, I stumbled across this conversation and thought I would share my observation.