Description
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