Я создаю приложение с веб-просмотром. Я хочу отобразить уведомление браузера на рабочем столе в локальном уведомлении. Я нашел способ сделать это, но мне это не слишком нравится. Этот проект https://github.com/jnordberg/irccloudapp делает это, у него есть NotificationProvider, это частный протокол Webview.
Я создал приложение abase для этого проекта. Поставщик уведомлений написан на Objc, а остальная часть моего приложения я передал его быстро, поэтому в своем проекте я комбинирую 2 языка с заголовком моста
Так что мне удалось отобразить браузеры уведомлений локально.
У меня 2 проблемы.
Первое - это то, что я не люблю совмещать Objc и swift. Я хотел бы провести весь проект быстро, но не могу перевести. это потому что это частный протокол и есть какой-то объект, который я не могу использовать, например WebSecurityOrigin
или WebNotificationPrivate
. В Objc это легко, потому что объекты определены следующим образом:
@class WebNotificationPrivate;
@class WebSecurityOrigin;
Вот протоколы NotificatrionProvider:
@protocol WebNotificationProvider
- (void)registerWebView:(WebView *)webView;
- (void)unregisterWebView:(WebView *)webView;
- (void)showNotification:(WebNotification *)notification fromWebView:(WebView *)webView;
- (void)cancelNotification:(WebNotification *)notification;
- (void)notificationDestroyed:(WebNotification *)notification;
- (void)clearNotifications:(NSArray *)notificationIDs;
- (WebNotificationPermission)policyForOrigin:(WebSecurityOrigin *)origin;
- (void)webView:(WebView *)webView didShowNotification:(uint64_t)notificationID;
- (void)webView:(WebView *)webView didClickNotification:(uint64_t)notificationID;
- (void)webView:(WebView *)webView didCloseNotifications:(NSArray *)notificationIDs;
@end
@interface WebView (WebViewNotification)
- (void)_setNotificationProvider:(id<WebNotificationProvider>)notificationProvider;
- (id<WebNotificationProvider>)_notificationProvider;
- (void)_notificationControllerDestroyed;
- (void)_notificationDidShow:(uint64_t)notificationID;
- (void)_notificationDidClick:(uint64_t)notificationID;
- (void)_notificationsDidClose:(NSArray *)notificationIDs;
@end
Мы можем найти протокол ir https://opensource.apple.com/source/WebKit/WebKit-7536.30.1/mac/WebView/WebViewPrivate.h.auto.html
Вторая вещь в том, что WebView устарел, есть ли эквивалент для WKWebView? И как это реализовать?