Deeplinking utilizzando GWT Storia simbolici all'interno di un Facebook iFrame Canvas

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

  •  20-09-2019
  •  | 
  •  

Domanda

Vorrei deep link direttamente a una pagina applicazione GWT all'interno di un Facebook iFrame tela di canapa.

La prima parte è semplice utilizzando token di Storia di GWT con URL del tipo:

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

che aprirebbe page1 nel mio app.

Applicazioni Facebook utilizzare un URL un'applicazione come:

http://apps.facebook.com/myAppName

che incornicia la mia tela Callback URL

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

C'è un modo per specificare una tela callback URL (o bookmark url) che avrà l'utente ad una pagina specifica, piuttosto che la pagina indice?

Perché? si può chiedere. Oltre a tutti i vantaggi di legami profondi ...

  • Voglio il "Go To Application" url di prendere gli utenti a una pagina di indice w / materiale di marketing (l'url tela callback)

  • Voglio il "URL segnalibro" per prendere (probabile ritorno) gli utenti a una pagina di login e di bypass scaricando il contenuto di marketing (e che enorme file SWF).

È stato utile?

Soluzione

Questo può sembrare un hack, ma qui va.

Facebook consente all'applicazione di virare su parametri all'URL? X = 123

Così sto controllando la posizione finestra per vedere se contiene la mia speciale 'pagina' parametri e caricare la pagina. Qui di seguito è la mia soluzione, dato che sto usando classe PlaceManager GWT + di GWT-presentatore.

Il profondo url applicazione finisce per essere 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();
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top