Swift: Какао, как отобразить уведомление о веб-просмотре с WKWebview - PullRequest
0 голосов
/ 13 октября 2019

Я создаю приложение с веб-просмотром. Я хочу отобразить уведомление браузера на рабочем столе в локальном уведомлении. Я нашел способ сделать это, но мне это не слишком нравится. Этот проект 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? И как это реализовать?

...