Deeplinken mit GWT Geschichte Token innerhalb eines Facebook iFrame Leinwand

StackOverflow https://stackoverflow.com/questions/2457994

  •  20-09-2019
  •  | 
  •  

Frage

Ich möchte Deep-Link direkt auf eine GWT App-Seite innerhalb eines Facebook iFrame Canvas.

Der erste Teil ist einfach mit GWT History Token mit URLs wie:

http://www.example.com/MyApp/#page1

, die page1 innerhalb meiner app öffnen würde.

Facebook Apps verwenden, um eine Anwendung URL wie:

http://apps.facebook.com/myAppName

, die meine Leinwand Callback URL Rahmen

http://www.example.com/MyApp/

Gibt es eine Möglichkeit, eine Leinwand zu geben Rückruf-URL (oder Lesezeichen-URL), die den Benutzer auf eine bestimmte Seite zu nehmen, statt der Index-Seite?

Warum? werden Sie fragen. Neben all den Vorteilen von Deep-Links ...

  • Ich mag die "Go To Application" url Benutzer zu einer Indexseite nehmen w / Marketing-Material (die Leinwand Rückruf-URL)

  • Ich mag die „Lesezeichen-URL nehmen“ (wahrscheinlich Rückkehr) Benutzer auf eine Anmeldeseite und Bypass die Vermarktung Herunterladen von Inhalten (und die große SWF-Datei).

War es hilfreich?

Lösung

Dies mag ein Hack sein, aber hier geht es.

erlaubt Facebook die Anwendung tack auf Parameter an die URL? X = 123

So Ich überprüfe das Fenster Lage, um zu sehen, ob es meine besonderen ‚Seite‘ enthält Parameter und Laden der Seite. Unten ist meine Lösung gegeben, dass ich GWT + GWT-Moderators PlaceManager Klasse bin mit.

Die Anwendung tief URL endet als http://apps.facebook.com/myAppName? page = page1

    EventBus eventBus = injector.getEventBus();

    // Load PlaceManager so it can start listening
    PlaceManager placeManager = injector.getPlaceManager();
    String currentPlace = History.getToken();

    String place = Window.Location.getParameter( "page" );
    if (place != null && !place.isEmpty()) {
        // send user to the place on the URL line
        eventBus.fireEvent( new PlaceRequestEvent( new PlaceRequest( new Place (place) ) ));

    } else if ("".equals(currentPlace)) {
        // Nothing in URL, load default GWTpage
        eventBus.fireEvent( new PlaceRequestEvent(new PlaceRequest( IndexPresenter.PLACE)));

    } else {
        // fire a body to the Place Manager to activate the requsted Place
        placeManager.fireCurrentPlace();
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top