Posts

Post not yet marked as solved
2 Replies
1.1k Views
I currently use this hack to determine a TestFlight build on iOS: https://stackoverflow.com/a/32238344/784615 Now that TestFlight also supports macOS, I wonder two things: Is there a standard API to detect a TestFlight build? In general, a TestFlight framework would be HIGHLY desirable If not, anyone knows a hack like the above that would work for macOS? I ask because the in-app receipt is called "receipt" even for TestFlight builds on macOS. Thanks in advance
Posted
by keeshux.
Last updated
.
Post not yet marked as solved
0 Replies
1.2k Views
Hi,after several user reports started with iOS 13, I found the root cause of an issue with my VPN app.Context:- My networking code runs in a custom DispatchQueue with QoS .utility, as per a suggestion by eskimo in another thread.- The NEVPNProtocol.disconnectOnSleep flag is set to false.- I do not override the sleep/wake handlers in NEPackeTunnelProvider.Until iOS 12, the VPN would keep working across the sleep/wake cycles, with the socket handlers surviving the sleep state. This doesn't seem to be the case in iOS 13, so I dug further.By overriding sleep() and wake() in the provider, for logging purposes, I noticed that after a "longer" sleep, DispatchQueue.async() blocks hang up. They literally stop running, to then revive immediately after waking up the device. The effect is that the VPN doesn't disconnect on the sleep event, but triggers a ping timeout as soon as the device is turned on again. Due to inactivity.I can't find a way to restore former "Keep alive on sleep" behavior, because even if the VPN is not actively disconnected on sleep, it still stops working. I mean, does Apple want us to kill the VPN on sleep? Is it an option or a requirement? It's not 100% clear to me from the documentation:https://developer.apple.com/documentation/networkextension/neprovider/1406731-sleep> NEProvider subclasses should override this method if the provider needs to perform any tasks before the device sleeps, such as disconnecting a tunnel connection.Had this been a requirement, it would IMHO be in contradiction with the existence of "disconnectOnSleep". At this point I even wonder if former behavior (iOS 12) was the side-effect of a bug (= queue surviving sleep), eventually fixed in iOS 13.I'd like to know more about this, before looking for a fix in an app that TBH had performed very well until iOS 13.Thanks,Davide
Posted
by keeshux.
Last updated
.
Post not yet marked as solved
2 Replies
2.9k Views
Hi,I've had this bug reported by my app users since iOS 13 beta came out. I've created issue 7139263 but I'm also posting here because the release date is dangerously close, as the bug severely affects my app -which today has a hard-worked almost 5 stars rating.My app ("Passepartout - OpenVPN Client") defines a custom "Extension type" and a corresponding "Imported UTI" for .ovpn files. This way it can open .ovpn files and thus show up as "Copy to Passepartout" in the menus. It has happily coexisted with other apps like OpenVPN Connect doing the same, until iOS 12.Starting from iOS 13, it looks like as long as other apps handle the same file extension, only one of them makes it to "Copy to ***". In fact, if I uninstall OpenVPN Connect, my app does show up again as usual. If both are installed, only one of them appears. Mostly the other ones, yet not always.My Info.plist has worked since forever before iOS 13, so behavior must have changed under the hood. I can't exclude that I had been "lucky" with a wrong configuration so far, but the fact of the matter is that I'm kind of left wondering. I don't have elements to assert that this is a bug or some obscure API change.Either way, I'm looking for either a bugfix or guidelines for how to fix the app on my end. If it's a bug, it's quite a nasty one IMHO.Follows the relevant excerpt of my Info.plistThanks in advance---... <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeIconFiles</key> <array/> <key>CFBundleTypeName</key> <string>ovpn</string> <key>CFBundleTypeRole</key> <string>Editor</string> <key>LSHandlerRank</key> <string>Owner</string> <key>LSItemContentTypes</key> <array> <string>app.passepartoutvpn.formats.ovpn</string> </array> </dict> </array> <key>UTImportedTypeDeclarations</key> <array> <dict> <key>UTTypeConformsTo</key> <array> <string>public.text</string> <string>public.plain-text</string> </array> <key>UTTypeDescription</key> <string>OpenVPN configuration file</string> <key>UTTypeIconFiles</key> <array/> <key>UTTypeIdentifier</key> <string>app.passepartoutvpn.formats.ovpn</string> <key>UTTypeTagSpecification</key> <dict> <key>public.filename-extension</key> <array> <string>ovpn</string> <string>OVPN</string> </array> </dict> </dict> </array> ...
Posted
by keeshux.
Last updated
.