الارتباط العميق باستخدام GWT History Token داخل Facebook iFrame Canvas

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

  •  20-09-2019
  •  | 
  •  

سؤال

أرغب في الارتباط العميق مباشرة بصفحة تطبيق GWT داخل Facebook iFrame Canvas.

الجزء الأول بسيط باستخدام رمز سجل GWT مع عناوين URL مثل:

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

والتي من شأنها فتح الصفحة 1 داخل تطبيقي.

تستخدم تطبيقات Facebook عنوان URL للتطبيق مثل:

http://apps.facebook.com/myAppName

الذي يؤطر عنوان URL لرد اتصال Canvas الخاص بي

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

هل هناك طريقة لتحديد عنوان url لرد الاتصال (أو عنوان url للإشارة المرجعية) والذي سينقل المستخدم إلى صفحة معينة بدلاً من صفحة الفهرس؟

لماذا؟يمكنك السؤال.بالإضافة إلى جميع فوائد الروابط العميقة...

  • أريد أن يقوم عنوان URL "الانتقال إلى التطبيق" بنقل المستخدمين إلى صفحة فهرس تحتوي على مواد تسويقية (عنوان url لرد اتصال اللوحة القماشية)

  • أريد أن يقوم "عنوان URL للإشارة المرجعية" بنقل المستخدمين (من المحتمل أن يعودوا) إلى صفحة تسجيل الدخول وتجاوز تنزيل المحتوى التسويقي (وملف SWF الضخم هذا).

هل كانت مفيدة؟

المحلول

قد يبدو هذا وكأنه اختراق ولكن هنا يذهب.

يسمح Facebook للتطبيق بإضافة المعلمات إلى عنوان url ?x=123

لذلك أنا أتحقق من موقع النافذة لمعرفة ما إذا كانت تحتوي على معلمة "الصفحة" الخاصة بي وأقوم بتحميل تلك الصفحة.يوجد أدناه الحل الخاص بي نظرًا لأنني أستخدم فئة PlaceManager الخاصة بـ GWT + gwt-presenter.

يصبح عنوان url العميق للتطبيق 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();
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top