Intercept WKWebView requests and responses in iOS 9 - encryption

I have the following requirements:
The application has local HTML content that is encrypted
This local content has to be displayed using a WKWebView
Intercept the requests done from the WKWebView and provide a custom response for each requests (decrypting the content on the fly)
Support iOS 9.3
The requirements could be fulfilled using WKURLSchemeHandler but this was only introduced in iOS 11.
The only solution that I can reach so far would be:
Embed a web server in the application listening for example at http://localhost:8080
The server would read the local content, decrypt it and send it back to the WKWebView
Change the web content so that all requests are directed to http://localhost.8080
Having an embeded web server seems overkill and will introduce a whole lot of trobule. But it seems this is the approach that has been taken when faced with similar requirements. For example the Cordova and Ionic Capacitor projects.
Ionic Capacitor only removed the embeded web server when they dropped support for iOS 10:
https://github.com/ionic-team/capacitor/releases/tag/1.0.0-beta.11
I'm not interested in solutions using private APIs.

Related

FetchEvent for "<URL>" resulted in a network error response: CORP prevented from serving the response to the client

I'm building and app with firebase and expo in react native. The app has live streaming with Zoom Web SDK. In order to deliver a better experience to the end user, for example, the ability to send video faster and enable multiple video streams, which powers features like Gallery View and Virtual Backgrounds, we need to enable SharedArrayBuffer.
As of Chrome 92, SharedArrayBuffer is only available if your web page is Cross-Origin Isolated, or if your web page uses Credentialless headers.
We implemented the coi-serviceworker from https://github.com/gzuidhof/coi-serviceworker and the rules to implement this are:
Rules: 1. It must be in a separate file, you can't bundle it along with your app. 2. It can't be loaded from a CDN: it must be served from your own origin. 3. Your page will still need to be either served from HTTPS, or served from localhost.
THE PROBLEM:
When a implemented the coi-serviceworker in my code, all the files(images and videos) that comes from the firebase storage are not displaying anymore.
I think the error is because of the second rule, because we use Firebase Hosting to publish our app, but the Zoom Gallery View works.
Firebase Hosting uses an advanced global content delivery network (CDN) to make your website as fast as possible. Requested static content is automatically cached on the CDN. If you resume site content, Firebase Hoststatic will not automatically clear all content and CDN cache until the next request.
Someone faced the same issue? I appreciate any help!

Adding Server Push to replace polling on to an asp.net WebAPI REST service

I am hoping this is not too off topic for a post here.
I have an asp.net webAPI service, which provides a number of routes to get near realtime data (ie within say 10 seconds), which required the client application to poll for changes.
I am investigating on which technology would be best to add an "opt in" push notification service, which just pushes "thin" payloads to tell the client application it is now time to call the existing REST route for an update. This way, the push payload is small, and does not contain any security sensitive data (it still gets this using the existing REST security infrastructure)
Cloud based messaging
Previously, I have been told that, for a Mobile application, I should use something like Firebase cloud messaging, or some other messaging service, however this does not seem like the right solution for "subscription based notifications" I am talking about here. I can certainly see this would be useful, if the client is on either iOS or Android device, and wanted messages/notifications/alarms (etc), which could also work when the application is not running, but this does not seem like the right thing to use of these notifications of changed data (which may be happening all the time, sometimes every 5 seconds). Also, I do not want to only target these mobile devices, but also, for example either a web or desktop application, which may also use the same REST service
Other technologies
I have seen mention of Web sockets, or, in the case of asp.net, the option to use SignalR (which will wrap the web sockets, with fallback). SignalR looks good, but my worry is the availability of client libraries for non web / Windows applications (eg iOS, Android). I am also looking at Rest Hooks. These look interesting, but I can't quite see what the actual "push mechanism" is; it almost looks like they need to POST to the subscriber using HTTP, which means the subscriber has to also act as a "server endpoint".
Just after any thoughts / best practices on this, or what others have used?
In particular, (the verification or otherwise), that for this use case, using cloud based messaging is not the right thing to use due to the frequency of these push notifications (ie something where my server gets to the application via another 3rd party service which pushes to the device/application)
Thanks in advance for any suggestions!
Signalr is an option
There are some libraries which you can use in iOS and android. I suggest you to read once https://visualstudiomagazine.com/articles/2013/11/01/how-to-use-signalr-in-ios-and-android-apps.aspx (its a bit older, but on the point)
Android Client: See How to use signalr in Android
Some alternatives :
Pusher (https://pusher.com/)
Android Client: https://pusher.com/docs/android_quick_start
iOS Client: https://pusher.com/docs/ios_quick_start
Socket.IO (https://socket.io/)
Details iOS Client: https://socket.io/blog/socket-io-on-ios/
Details Andriod Client: https://github.com/socketio/socket.io-client-java
To discuss:
Why you will only send a thin payload whith signalr? I see no benefit for that.
Why "using cloud based messaging is not the right thing"? I do not understand your arguments but I do not know how your application looks like.

API to access Windows Store

Does windows store has an API?
For example when you open the "store" app, there is a "top free" list that will show the top 100 most popular free apps. Is the list coming from an HTTP endpoint somewhere on the internet?
There is no official API for accessing content in the Windows Store. I'm sure that the content is being pulled in from the web via and HTTP or HTTPS endpoint but using an undocumented service like this would likely not be recommended. It also doesn't look like there is a protocol activation schema documented for launching the store. The closest thing I can find is the MarketplaceDetailTask in Windows Phone. http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.tasks.marketplacedetailtask(v=vs.105).aspx
The only other supported way of launching the store would be by using links to apps which cause the store to open.

How to disable HTTP pipelining from iOS5 devices to a regular website

One of my clients is having a problem with their web service ever since iOS5 came out. Their service (an HTTP api) reacts weirdly to HTTP pipelining calls and it will take a few days to fix it. Is there any meta or HTTP response setting I can set in my website to disable this feature when iOS5 devices browse to my page? This is a standard web application and not a native app.
I Googled to no prevail. Thanks.

BlackBerry - Access to web service from real device

hi i have developed a application, that works fine on the simulator, now i want to test the application on the actual device.
my application tries to access web services over the internet. I mean to say, the application makes SOAP request to web services. Also i am accessing the web services using https
So in this case, do i need to first sign the application.
if not, then how do i go ahead, with deploying the application.
i tried deploying the application, using the blackberry desktop manager, the application got installed, but it is not making calls to web service.i mean to say, the application is not hitting the web service
Are you getting any error messages from the application? If you need to sign any API's then you'll receive an error.
Use the Blackberry Browser to check if you can hit the webservice. Sometimes there can be issues if your handset is on a BES or if the webservice is behind a firewall.
Check that you have connections or it will timeout.
For https connection you can refer to foll. post :
http://supportforums.blackberry.com/t5/Java-Development/Connecting-your-BlackBerry-http-and-socket-connections-to-the/m-p/206242
This issue has to do with some MDS servers having a low default for how large the requests they can pass through are:
http://supportforums.blackberry.com/t5/Java-Development/HTTP-413-Request-Entity-Too-Large/ta-p/445983
Still trying to sort out a good solution to this myself for a service that returns a large XML packet since it can't be reliably known whether a user's service has the default minimum or something higher.

Resources