Deeplinking usando GWT Historia de emergencia dentro de un marco flotante Facebook lienzo

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Me gustaría a lo profundo del enlace directo a una página de aplicación GWT dentro de un marco flotante Facebook lienzo.

La primera parte es sencilla mediante el testigo de la historia de GWT con URLs como:

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

lo que abriría page1 dentro de mi aplicación.

Facebook Apps utilizar una URL aplicación como:

http://apps.facebook.com/myAppName

que enmarca el lienzo de devolución de llamada URL

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

¿Hay una manera de especificar una URL de devolución de llamada de la lona (o URL marcador) que se llevará al usuario a una página específica en lugar de la página de índice?

¿Por qué? Tu puedes preguntar. Además de todos los beneficios de los enlaces profundos ...

  • Quiero que el "Ir a la aplicación" url para llevar a los usuarios a una página de índice de material de marketing (la URL de devolución de llamada de lona)

  • w /
  • Quiero que el "URL marcador" para tomar (probabilidades de regresar) a los usuarios a una página de registro y derivación de descargar el contenido de marketing (y ese enorme archivo SWF).

¿Fue útil?

Solución

Esto puede parecer un truco, pero aquí va.

Facebook permite a la aplicación a arreos de parámetros a la URL? X = 123

Así que estoy marcando la ubicación de la ventana para ver si contiene mi parámetro especial 'página' y la carga de la página. A continuación se muestra mi solución teniendo en cuenta que estoy usando la clase PlaceManager GWT + GWT-presentador.

La url profunda aplicación termina siendo 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();
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top