Skip to content

Moving forward + better web support #302

Open
@sreuter

Description

@sreuter

Describe the bug
The current state of YouTube embedding across ReactNative iOS, Android & Web is pretty sad. Either libraries have bad quality, are incomplete, or are simply not maintained anymore. Of all the ones we checked out, this one is the most promising. Unfortunately, it also doesn't seem to get a lot of love these days anymore tho. And while web support is generally there, non of the external controls or events work. Let's change that!

To Reproduce
Steps to reproduce the behavior:

Do some research on all available YouTube embedding libraries + their activity (commits/open issues & replies) .. It's not great.

Expected behavior

As a first proposal, we'd like to suggest removing the dependency on injectJavascript. This, in return, will make this library work for both, native and web.

To give you a first idea, here's a WIP commit: questmate@39074a8

This, combined with the following part changed/added to the iframe.html made things work fine in our limited testing so far.

function sendMessageToRN(msg) {
  (window.ReactNativeWebView || window.parent).postMessage(
    JSON.stringify(msg),
    "http://localhost:19006"
  );
}
window.addEventListener("message", (message) => {
  console.log("Received Message in iFrame", message);
  const { eventType, data } = JSON.parse(message.data);
  console.log("Received Message in iFrame parsed:", eventType, data);
  switch (eventType) {
    case "getVideoUrl":
      sendMessageToRN({
        eventType: "getVideoUrl",
        data: player.getVideoUrl(),
      });
      break;
  }
});

@LonelyCpp Any thoughts on this? Maybe there was a good reason for not simply relying on postMessage & onMessage and instead working with injectJavascript? Also, do you have any interest in work resuming on the library, or would you instead recommend forking it or starting from scratch?

Screenshots
N/A

Smartphone (please complete the following information):
N/A

Additional context
N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions