Skip to content

Commit 4a30633

Browse files
committed
Add ApplicationController::onOpenURL
1 parent 7175d1a commit 4a30633

3 files changed

Lines changed: 23 additions & 0 deletions

File tree

framework/foundation/include/bdn/ApplicationController.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22

3+
#include <bdn/String.h>
34
#include <memory>
45

56
namespace bdn
@@ -17,5 +18,6 @@ namespace bdn
1718
virtual void onSuspend() {}
1819
virtual void onResume() {}
1920
virtual void onTerminate() {}
21+
virtual void onOpenURL(const String &url) {}
2022
};
2123
}

framework/ui/platforms/ios/include/bdn/ios/UIApplication.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ namespace bdn::ui::ios
3030
void _applicationDidEnterBackground();
3131
void _applicationWillEnterForeground();
3232
void _applicationWillTerminate();
33+
bool _applicationOpenURL(NSURL *url);
3334

3435
private:
3536
void buildCommandlineArguments(int argCount, char *args[]);

framework/ui/platforms/ios/src/UIApplication.mm

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,16 @@ - (void)applicationWillTerminate:(UIApplication *)application
7878
}
7979
}
8080

81+
- (BOOL)application:(UIApplication *)app
82+
openURL:(NSURL *)url
83+
options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
84+
{
85+
if (auto app = self.bdnApplication.lock()) {
86+
return app->_applicationOpenURL(url) ? YES : NO;
87+
}
88+
return NO;
89+
}
90+
8191
@end
8292

8393
namespace bdn::ui::ios
@@ -188,6 +198,16 @@ - (void)applicationWillTerminate:(UIApplication *)application
188198
bdn::platformEntryWrapper([&]() { applicationController()->onTerminate(); }, false);
189199
}
190200

201+
bool UIApplication::_applicationOpenURL(NSURL *url)
202+
{
203+
if (!url) {
204+
return false;
205+
}
206+
bdn::String bdnUrl = [url absoluteString].UTF8String;
207+
bdn::platformEntryWrapper([&]() { applicationController()->onOpenURL(bdnUrl); }, false);
208+
return true;
209+
}
210+
191211
void UIApplication::initiateExitIfPossible(int exitCode) {}
192212

193213
void UIApplication::disposeMainDispatcher()

0 commit comments

Comments
 (0)