What's new in WKWebView

RSS for tag

Discuss the WWDC22 Session What's new in WKWebView

Posts under wwdc2022-10049 tag

43 Posts

Post

Replies

Boosts

Views

Activity

WKWebView to go unresponsive and crash in iOS 15
We're having problems in iOS 15.0+ with WKWebView and this assertion: [assertion] Error acquiring assertion: <Error Domain=RBSServiceErrorDomain Code=1 "target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit" UserInfo={NSLocalizedFailureReason=target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit}>  [ProcessSuspension] 0x116004e40 - ProcessAssertion: Failed to acquire RBS assertion 'ConnectionTerminationWatchdog' for process with PID=11505, error: Error Domain=RBSServiceErrorDomain Code=1 "target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit" UserInfo={NSLocalizedFailureReason=target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit} No problems for iOS versions < 15, and disabling this feature fixed the issue for us. We are looking to understand if this feature is intended to be enabled as part of iOS 15's official release. Curious if there is any insight available.
7
5
22k
Nov ’23
WebAuthn support in WKWebViews
Hi, We have PWA and we are loading it in WKWebViews but when we run it in simulator using xcode biometric login functionality is not working (Touch id) for which we have used webauthn. Is there any way to resolve this issue while using WKWebviews?
1
1
1.1k
Oct ’23
Unable to capture WebGL images using native screenshot methods in WKWebView rendering.
I used some code to capture WebGL images from a webpage. It works fine on iOS 16 and above, but the images generated in iOS 16 and below are black. Can someone help me solve this problem? UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.recordView.frame.size.width, self.recordView.frame.size.height), NO, scale); CGContextRef ctx = UIGraphicsGetCurrentContext(); if (!ctx) { NSLog(@"error"); } [self.recordView drawViewHierarchyInRect:CGRectMake(0, 0, self.recordView.frame.size.width, self.recordView.frame.size.height) afterScreenUpdates:YES]; UIImage *vImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
0
0
698
May ’23
WebAuthn support in WKWebViews
Hi All, We have created our application's PWA and we are loading it in WKWebViews but when we run it in simulator using xcode biometric login functionality is not working (Touch id) for which we have used webauthn. Is there any way to resolve this issue while using WKWebviews? Or any other idea?
0
1
819
Apr ’23
Can not hide "search website" menu in wkwebview for iOS16
I have an App which need to select content info in a webview, then popup a menu for more action, and this is all done using h5, in iOS, I have hide the menu using below code: - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {     return NO; } Everything went well below iOS16, when iOS upgraded to iOS16, a system menu called "search website" shows above the h5 menu, does anyone knows how to hide the "search website"?
0
0
762
Mar ’23
Ipad ios 16.3 HLS or video playing is not working
I am using flutter better player and flutter webview , For flutter webview if Include video html tag with mp4 the html page refuses to open on ipad 16.3 but on ipad ios 16.2 everything works fine If include video in flutter better player ipad ios 16.3 refuses to play but it works fine on ipad 16.2 i am using xcode 14.2 and the simulator only provide ios 16.2 So right now i am confuse , i dont know what to do
0
0
888
Feb ’23
PresentationDragIndicator disappears in dark mode
Hello. I'm implementing a webview in my app. Recently I'm using presentationDetents(_:) which is supported in iOS 16. And I found a problem in this Instance Method. PresentationDrag Indicator disappears in dark mode. It does not disappear when used in a common View. However, when I use it in htmlView(), this phenomenon appears. [Even if I set Css for dark mode in htmlView(), the result is the same.] I would be grateful if you could tell me how to solve this. Is there any way to control the style of presentationDetents (frame) or PresentationDragIndicator? (I'm aware of the parameters that hide or show the Indicator, but I'm asking if I can have more control over it.) in MainView: ... ... .sheet(isPresented: $activeSheet) { VStack(){ HTMLView(html: urlToOpenInSheet) .presentationDetents([.medium, .large]) .padding(5) } } ... ... in htmlView: struct HTMLView: UIViewRepresentable { let html: String class CoordinatorHTML : NSObject, UITextViewDelegate { func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { print(URL) return false } } func updateUIView(_ uiView: UITextView, context: UIViewRepresentableContext<Self>) { DispatchQueue.main.async { let addCss = "<head><style type=\"text/css\">" + """ @font-face { font-family: "Avenir"; } body {font-family: "Avenir"; font-size: 14px; line-height: 1.0; margin: 30px;} """ + " </style></head>" + "<body>" + html + "</body>" let data = Data(addCss.utf8) if let attributedString = try? NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil) { uiView.isEditable = false uiView.isSelectable = true uiView.attributedText = attributedString } } } func makeUIView(context: UIViewRepresentableContext<Self>) -> UITextView { let uiTextView = UITextView() uiTextView.delegate = context.coordinator uiTextView.isScrollEnabled = true uiTextView.backgroundColor = UIColor.white return uiTextView } func makeCoordinator() -> CoordinatorHTML { return CoordinatorHTML() } } And attached image: Light Mode Dark Mode
1
0
944
Feb ’23
Camera Permissions using WKWebView
Dear folks, This is my first time asking help here, I've been working on a WKWebView app that loads a PHP website, the content allows user to upload pictures, audio and so. Apple review process is asking me to change a default message from a popup where the Apps asks permission to use Camera and Audio. For that, I added the respective code to the info.plist file. In the code when I ask permission for the user to use the features, the following happens: Location: picks the comment from info.plist correctly Photo Library: picks the comment from info.plist correctly Camera: doesn't pick the description from info.plist Audio: doesn't pick the description from info.plist Only Camera and Audio is now holding my App to be published as the review process ask me to include an example on how the feature will be use inside the popup. AppDelegate looks like: class AppDelegate: UIResponder, UIApplicationDelegate {           func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {           if UIImagePickerController.isSourceTypeAvailable(.camera) {       AVCaptureDevice.requestAccess(for: AVMediaType.audio) { haveMicAccess in }       AVCaptureDevice.requestAccess(for: AVMediaType.video) { haveVidAccess in } }     if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {       PHPhotoLibrary.requestAuthorization({ (newStatus) in }) }     // Override point for customization after application launch.     return true   } My info.plist looks like: The popup that doesn't pick the message from info.plist If you can give me a direction on how ti fix this ... it would be a lot appreciated Thanks,
0
0
2.2k
Jan ’23
TabBar with WebView Url
Can anyone help me please... in the contentview i put this but only tabbar i have no and the urlwebview i dont know where to put it, do i need to put in the contentview or in the other swiftfile bars? import SwiftUI struct ContentView : View {           var body: some View {                      TabView {                              ViewA()                     .tabItem(){                         Image(systemName: "house.fill")                         Text("Home")                     }                                  ViewB()                     .tabItem(){                         Image(systemName: "person.fill")                         Text("Log In")                     }                                  ViewC()                     .tabItem(){                         Image(systemName: "newspaper.fill")                         Text("Blog")                     }                                  ViewD()                     .tabItem(){                         Image(systemName: "phone.fill")                         Text("Contact")                     }                              }             .accentColor(.black)         }                           struct ContentView_Previews: PreviewProvider {             static var previews: some View{                 ContentView()                              }         }
0
0
1.1k
Jan ’23
URLSessionWebSocketTask only connecting on webview host's port, not other networks
Dear Team, I am using webview(WKWebview), in which I am trying to make Websocket with server. I have created WebSockets using URLSessionWebSocketTask. when I connect the Websocket to any port under my Webview host, it works: if my webview url is: 192.168.1.55:8090 and websocket url is : 192.168.1.55:8099, it works and connects ( I tested with using custom Nodejs Sever running on 192.168.1.55:8099) But if my webview url is: 192.168.1.55:8090 and websocket url is : 192.168.1.110:8099, it never connects. Why is this problem happening ? I added in info.plist: NSAllowsArbitraryLoads key to YES under NSAppTransportSecurity , but it still doesn't work. urlKommSession = URLSession(configuration: .default, delegate: self, delegateQueue: nil) guard let url = URL(string: urlStr) else { print("url problem") return } if (url != nil) { self.webSocketTaskKomm = try urlKommSession?.webSocketTask(with: url) self.webSocketTaskKomm.resume() } I am receiving connection Status in: func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didOpenWithProtocol protocol: String?) { print("Connection Opened") }
0
0
833
Jan ’23
UITest with WkWebview
Hi I want to perform UITest with WKWebview but getting the following issues: Not able to fill the text in textfiled. Not able to tap on buttons. Once tap on the button programmatically, app getting crashed. Please suggest the best approach. I am doing like : if (self.app.textFields.firstMatch.placeholderValue == "Email address" ) {             app.webViews.element(matching: .textField, identifier: "email").typeText("emailID")      } let webViewsQuery = XCUIApplication().webViews.webViews.webViews let logInButton = webViewsQuery.buttons[" Log In"] logInButton.tap()
0
0
1k
Jan ’23
what does the WebView do?
Hi, it's my first time coding using xcode software.. I'm just curious what does webview do? is that for viewing a basic site through an app - like without not too much clicking especially if there is signup and login through third-party sites? i try to use it but the thing is it didnt work the click sign up through google account? what should i do? And I am curious which one is the right one to code? should i create a new swift file (template) to put the code in there or i can put the code direct to the contentview? what is the right code for it?
0
0
670
Dec ’22
wkwebview.navigationdelegate is still nil after assigned delegate
I assign its navigationDelegate in my 'CustomWebView' init function, the init function is called in the viewDidLoad function and the 'CustomWebView' implements the WKNavigationDelegate functions, objection_requires(NSStringFromSelector(@selector(configRepository))) - (instancetype)initWithConfiguration:(WKWebViewConfiguration *)configuration configRepository:(SKYConfigRepository *)configRepository { self = [super init]; _configRepository = configRepository; if (self) { [[JSObjection defaultInjector] injectDependencies:self]; self.converterLink = [JSObjection defaultInjector][@protocol(UniversalLinkConverterProtocol)]; WKWebViewConfiguration *wkWebViewConfig = [self getWebViewConfigWithUpdatedUserAgent:configuration]; _wkWebView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:wkWebViewConfig]; _wkWebView.navigationDelegate = self; ... ... then when I debug the '_wkWebView.navigationDelegate' is nil the 'self' is not nil, and it implements the WKNavigationDelegate, {   WKWebView *_wkWebView;   SKYConfigRepository *_configRepository; }
3
0
1.8k
Dec ’22
WKWebView auto reloading upon app resume
I recently noticed that putting the app on background for some time, then switching back to it again causes the WKWebView to reload the current page, same with just hitting f5 on it. How do we disable this behavior?
Replies
2
Boosts
0
Views
1.2k
Activity
Aug ’25
WKWebView to go unresponsive and crash in iOS 15
We're having problems in iOS 15.0+ with WKWebView and this assertion: [assertion] Error acquiring assertion: <Error Domain=RBSServiceErrorDomain Code=1 "target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit" UserInfo={NSLocalizedFailureReason=target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit}>  [ProcessSuspension] 0x116004e40 - ProcessAssertion: Failed to acquire RBS assertion 'ConnectionTerminationWatchdog' for process with PID=11505, error: Error Domain=RBSServiceErrorDomain Code=1 "target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit" UserInfo={NSLocalizedFailureReason=target is not running or doesn't have entitlement com.apple.runningboard.assertions.webkit} No problems for iOS versions < 15, and disabling this feature fixed the issue for us. We are looking to understand if this feature is intended to be enabled as part of iOS 15's official release. Curious if there is any insight available.
Replies
7
Boosts
5
Views
22k
Activity
Nov ’23
WebAuthn support in WKWebViews
Hi, We have PWA and we are loading it in WKWebViews but when we run it in simulator using xcode biometric login functionality is not working (Touch id) for which we have used webauthn. Is there any way to resolve this issue while using WKWebviews?
Replies
1
Boosts
1
Views
1.1k
Activity
Oct ’23
IOS 14.4.1 WebView HTML content CSS Position:fixed Disappear when scroll
I have an IOS app with a Web View. The website have a fixed header and footer. Since the update to 14.4.1 the header is pushed down, and the footer becomes invisible when the page is scrolled.
Replies
3
Boosts
0
Views
2.0k
Activity
Jul ’23
Unable to capture WebGL images using native screenshot methods in WKWebView rendering.
I used some code to capture WebGL images from a webpage. It works fine on iOS 16 and above, but the images generated in iOS 16 and below are black. Can someone help me solve this problem? UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.recordView.frame.size.width, self.recordView.frame.size.height), NO, scale); CGContextRef ctx = UIGraphicsGetCurrentContext(); if (!ctx) { NSLog(@"error"); } [self.recordView drawViewHierarchyInRect:CGRectMake(0, 0, self.recordView.frame.size.width, self.recordView.frame.size.height) afterScreenUpdates:YES]; UIImage *vImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
Replies
0
Boosts
0
Views
698
Activity
May ’23
WKWebView support push notifications
Hi, Is it any plan for implement push notifications in WKWebView after iOS 16.4? I need to access to this: window.PushManager window.Notification 'Notification' in window but in WKWebView I don't have access to this.
Replies
0
Boosts
0
Views
809
Activity
Apr ’23
How to do complete actions on WKwebview in ios
How to do complete actions like click/get text/ etc using WKwebview in ios
Replies
0
Boosts
0
Views
595
Activity
Apr ’23
WebAuthn support in WKWebViews
Hi All, We have created our application's PWA and we are loading it in WKWebViews but when we run it in simulator using xcode biometric login functionality is not working (Touch id) for which we have used webauthn. Is there any way to resolve this issue while using WKWebviews? Or any other idea?
Replies
0
Boosts
1
Views
819
Activity
Apr ’23
Can not hide "search website" menu in wkwebview for iOS16
I have an App which need to select content info in a webview, then popup a menu for more action, and this is all done using h5, in iOS, I have hide the menu using below code: - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {     return NO; } Everything went well below iOS16, when iOS upgraded to iOS16, a system menu called "search website" shows above the h5 menu, does anyone knows how to hide the "search website"?
Replies
0
Boosts
0
Views
762
Activity
Mar ’23
Ipad ios 16.3 HLS or video playing is not working
I am using flutter better player and flutter webview , For flutter webview if Include video html tag with mp4 the html page refuses to open on ipad 16.3 but on ipad ios 16.2 everything works fine If include video in flutter better player ipad ios 16.3 refuses to play but it works fine on ipad 16.2 i am using xcode 14.2 and the simulator only provide ios 16.2 So right now i am confuse , i dont know what to do
Replies
0
Boosts
0
Views
888
Activity
Feb ’23
PresentationDragIndicator disappears in dark mode
Hello. I'm implementing a webview in my app. Recently I'm using presentationDetents(_:) which is supported in iOS 16. And I found a problem in this Instance Method. PresentationDrag Indicator disappears in dark mode. It does not disappear when used in a common View. However, when I use it in htmlView(), this phenomenon appears. [Even if I set Css for dark mode in htmlView(), the result is the same.] I would be grateful if you could tell me how to solve this. Is there any way to control the style of presentationDetents (frame) or PresentationDragIndicator? (I'm aware of the parameters that hide or show the Indicator, but I'm asking if I can have more control over it.) in MainView: ... ... .sheet(isPresented: $activeSheet) { VStack(){ HTMLView(html: urlToOpenInSheet) .presentationDetents([.medium, .large]) .padding(5) } } ... ... in htmlView: struct HTMLView: UIViewRepresentable { let html: String class CoordinatorHTML : NSObject, UITextViewDelegate { func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { print(URL) return false } } func updateUIView(_ uiView: UITextView, context: UIViewRepresentableContext<Self>) { DispatchQueue.main.async { let addCss = "<head><style type=\"text/css\">" + """ @font-face { font-family: "Avenir"; } body {font-family: "Avenir"; font-size: 14px; line-height: 1.0; margin: 30px;} """ + " </style></head>" + "<body>" + html + "</body>" let data = Data(addCss.utf8) if let attributedString = try? NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil) { uiView.isEditable = false uiView.isSelectable = true uiView.attributedText = attributedString } } } func makeUIView(context: UIViewRepresentableContext<Self>) -> UITextView { let uiTextView = UITextView() uiTextView.delegate = context.coordinator uiTextView.isScrollEnabled = true uiTextView.backgroundColor = UIColor.white return uiTextView } func makeCoordinator() -> CoordinatorHTML { return CoordinatorHTML() } } And attached image: Light Mode Dark Mode
Replies
1
Boosts
0
Views
944
Activity
Feb ’23
Search text within Wkwebview
Hi, my app currently display local pdf file using wkwebview. However, how do i code search text within the pdf file? Is there any guideline for that? Thanks
Replies
0
Boosts
0
Views
723
Activity
Feb ’23
Camera Permissions using WKWebView
Dear folks, This is my first time asking help here, I've been working on a WKWebView app that loads a PHP website, the content allows user to upload pictures, audio and so. Apple review process is asking me to change a default message from a popup where the Apps asks permission to use Camera and Audio. For that, I added the respective code to the info.plist file. In the code when I ask permission for the user to use the features, the following happens: Location: picks the comment from info.plist correctly Photo Library: picks the comment from info.plist correctly Camera: doesn't pick the description from info.plist Audio: doesn't pick the description from info.plist Only Camera and Audio is now holding my App to be published as the review process ask me to include an example on how the feature will be use inside the popup. AppDelegate looks like: class AppDelegate: UIResponder, UIApplicationDelegate {           func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {           if UIImagePickerController.isSourceTypeAvailable(.camera) {       AVCaptureDevice.requestAccess(for: AVMediaType.audio) { haveMicAccess in }       AVCaptureDevice.requestAccess(for: AVMediaType.video) { haveVidAccess in } }     if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {       PHPhotoLibrary.requestAuthorization({ (newStatus) in }) }     // Override point for customization after application launch.     return true   } My info.plist looks like: The popup that doesn't pick the message from info.plist If you can give me a direction on how ti fix this ... it would be a lot appreciated Thanks,
Replies
0
Boosts
0
Views
2.2k
Activity
Jan ’23
TabBar with WebView Url
Can anyone help me please... in the contentview i put this but only tabbar i have no and the urlwebview i dont know where to put it, do i need to put in the contentview or in the other swiftfile bars? import SwiftUI struct ContentView : View {           var body: some View {                      TabView {                              ViewA()                     .tabItem(){                         Image(systemName: "house.fill")                         Text("Home")                     }                                  ViewB()                     .tabItem(){                         Image(systemName: "person.fill")                         Text("Log In")                     }                                  ViewC()                     .tabItem(){                         Image(systemName: "newspaper.fill")                         Text("Blog")                     }                                  ViewD()                     .tabItem(){                         Image(systemName: "phone.fill")                         Text("Contact")                     }                              }             .accentColor(.black)         }                           struct ContentView_Previews: PreviewProvider {             static var previews: some View{                 ContentView()                              }         }
Replies
0
Boosts
0
Views
1.1k
Activity
Jan ’23
URLSessionWebSocketTask only connecting on webview host's port, not other networks
Dear Team, I am using webview(WKWebview), in which I am trying to make Websocket with server. I have created WebSockets using URLSessionWebSocketTask. when I connect the Websocket to any port under my Webview host, it works: if my webview url is: 192.168.1.55:8090 and websocket url is : 192.168.1.55:8099, it works and connects ( I tested with using custom Nodejs Sever running on 192.168.1.55:8099) But if my webview url is: 192.168.1.55:8090 and websocket url is : 192.168.1.110:8099, it never connects. Why is this problem happening ? I added in info.plist: NSAllowsArbitraryLoads key to YES under NSAppTransportSecurity , but it still doesn't work. urlKommSession = URLSession(configuration: .default, delegate: self, delegateQueue: nil) guard let url = URL(string: urlStr) else { print("url problem") return } if (url != nil) { self.webSocketTaskKomm = try urlKommSession?.webSocketTask(with: url) self.webSocketTaskKomm.resume() } I am receiving connection Status in: func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didOpenWithProtocol protocol: String?) { print("Connection Opened") }
Replies
0
Boosts
0
Views
833
Activity
Jan ’23
UITest with WkWebview
Hi I want to perform UITest with WKWebview but getting the following issues: Not able to fill the text in textfiled. Not able to tap on buttons. Once tap on the button programmatically, app getting crashed. Please suggest the best approach. I am doing like : if (self.app.textFields.firstMatch.placeholderValue == "Email address" ) {             app.webViews.element(matching: .textField, identifier: "email").typeText("emailID")      } let webViewsQuery = XCUIApplication().webViews.webViews.webViews let logInButton = webViewsQuery.buttons[" Log In"] logInButton.tap()
Replies
0
Boosts
0
Views
1k
Activity
Jan ’23
Google Pay Integration for iOS US
There is any way to integrate the google pay in iOS App using webview for US. I have checked for India its available using UPI ID. Please help me if any way of integration.
Replies
0
Boosts
0
Views
761
Activity
Dec ’22
Can a wkWebView authentication be used with keychain for both saving/recalling passwords?
Can a wkWebView login form, with proper domain associations, be used with keychain? Moreover, I have discovered that it can use (domain associated) entries, but the save password dialogue does not seem to trigger for new entries. Ideas?
Replies
0
Boosts
0
Views
970
Activity
Dec ’22
what does the WebView do?
Hi, it's my first time coding using xcode software.. I'm just curious what does webview do? is that for viewing a basic site through an app - like without not too much clicking especially if there is signup and login through third-party sites? i try to use it but the thing is it didnt work the click sign up through google account? what should i do? And I am curious which one is the right one to code? should i create a new swift file (template) to put the code in there or i can put the code direct to the contentview? what is the right code for it?
Replies
0
Boosts
0
Views
670
Activity
Dec ’22
wkwebview.navigationdelegate is still nil after assigned delegate
I assign its navigationDelegate in my 'CustomWebView' init function, the init function is called in the viewDidLoad function and the 'CustomWebView' implements the WKNavigationDelegate functions, objection_requires(NSStringFromSelector(@selector(configRepository))) - (instancetype)initWithConfiguration:(WKWebViewConfiguration *)configuration configRepository:(SKYConfigRepository *)configRepository { self = [super init]; _configRepository = configRepository; if (self) { [[JSObjection defaultInjector] injectDependencies:self]; self.converterLink = [JSObjection defaultInjector][@protocol(UniversalLinkConverterProtocol)]; WKWebViewConfiguration *wkWebViewConfig = [self getWebViewConfigWithUpdatedUserAgent:configuration]; _wkWebView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:wkWebViewConfig]; _wkWebView.navigationDelegate = self; ... ... then when I debug the '_wkWebView.navigationDelegate' is nil the 'self' is not nil, and it implements the WKNavigationDelegate, {   WKWebView *_wkWebView;   SKYConfigRepository *_configRepository; }
Replies
3
Boosts
0
Views
1.8k
Activity
Dec ’22