Web Specific Functions
Obtaining URL parameters
You can obtain url parameters as HashTable<String, String>
.
//
// if the app launched with the parameter `siv3d.app.com?launched_via=twitter` ...
//
auto params = Platform::Web::System::GetURLParameters();
if (auto it = params.find(U"launched_via"); it != params.end())
{
Console << U"You launched this app via: {}"_fmt(it->second);
}
Web Notification
AsyncTask<bool> requestResult;
if (Platform::Web::Notification::IsAvailable())
{
requestResult = Platform::Web::Notification::RequestPermission();
}
while (System::Update())
{
if (requestResult.isReady() and requestResult.get())
{
ToastNotificationItem item {
.title = U"Siv3D for Web",
.message = U"Hello, Siv3D!"
};
Platform::Web::Notification::Show(item);
}
}
Download Files from Virtual File System
image.save(U"a.png");
// Download 'a.png' in the virtual file system with the name 'a.png'
Platform::Web::DownloadFile(U"a.png");
Write Additional Assets into Virtual File System from Server
// Download 'windmill.png' into the virtual file system with the name 'windmill.png'
Platform::Web::FetchFile(U"example/windmill.png");
Features that uses AsyncTask
Some features, such as AudioDecoding or Clipboard, blocks the main loop for several seconds.
Using platform-specific functions that returns AsyncTask
can keep the main thread from being blocked.
Awaiting AsyncTask
//
// Maybe blocks for several seconds
//
// Audio audio { U"/example/test.mp3" };
Audio audio;
AsyncTask<Wave> audioTask = s3d::Platform::Web::AudioDecoder::DecodeFromFile(U"/example/test.mp3");
// Synchronously wait until the audioTask gets ready.
if (auto resolvedAudio = s3d::Platform::Web::System::WaitForFutureResolved(audioTask))
{
audio = *resolvedAudio;
}
Audio Decoding
s3d::Platform::Web::AudioDecoder::DecodeAudioFromFile
returns AsyncTask<Wave>
.
//
// Maybe blocks for several seconds
//
// Audio audio { U"/example/test.mp3" };
Audio audio;
AsyncTask<Wave> audioTask = s3d::Platform::Web::AudioDecoder::DecodeFromFile(U"/example/test.mp3");
// check if audio decoding has been finished
if (audioTask.isReady())
{
audio = Audio{ audioTask.get() };
}
File Open Dialog
s3d::Platforms::Web::Dialog::Open**
returns AsyncTask<**>
.
//
// Maybe blocks for several seconds
//
// Audio audio = Dialog::OpenAudio();
Audio audio;
AsyncTask<Audio> audioTask = s3d::Platforms::Web::Dialog::OpenAudio();
// check if user has been selected file and decoding audio is finished
if (audioTask.isReady())
{
audio = audioTask.get();
}
Clipboard
Only test copying and pasting are supported. (and in FireFox, this feature is disallowed.)
s3d::Platforms::Web::Clipboard::GetText
returns AsyncTask<String>
.
(You can use s3d::Clipboard::SetText
in ordinal way.)
//
// Maybe blocks for several seconds
//
// String text;
//
// if (Clibboard::GetText(text))
// {
//
// }
AsyncTask<String> textTask;
String text;
textTask = Platforms::Web::Clipboard::GetText();
// check if text has been pasted from clipboard
if (textTask.isReady())
{
text = textTask.get();
}