Explaining iOS 8’s extensions: Opening the platform while keeping it secure
arstechnica.com
arstechnica.com
Can any iOS developers clarify the situation? I've long been an Android fan (I've even written a few apps), but iOS 8 (and its integrations with Yosemite) are very tempting.
Extensions cannot be enumerated or run programmatically using public APIs. They can only be presented after user interaction in a presented UIActivityViewController.
ActiveX is pretty much a poster child for what happens when you rush this kind of feature, so, hopefully the assorted security vulnerabilities will not occur with Extensions.
As for security: iOS warns you that a keyboard extension may send your input to a remote server, but it doesn't prevent it. I assume it's the same for the other extension points.
While I welcome the new keyboard extensions, they could've done better. A keyboard extension can send your input to a remote server but isn't allowed to set the text cursor or mark/copy/paste text. That's a huge drawback to me. The most effective mobile keyboard I've ever used was on my jailbroken iPhone, where you could move the cursor or mark text by swiping over the keyboard. But YMMV.
Note that Apple extensions do a different range of things than Android intents; they cover a lot of the same stuff as intents, but also some other things. In particular, they have plugin-like behaviour; you could, for instance, be writing an email, decide that you want to edit one of the images in the mail, and pop up an editor, which from the users point of view appears to be embedded in the app. The easy way would have been to implement this as a plugin; however, in that case it would live in the same sandbox, which would be dangerous. Android intents don't provide this functionality in the first place, so don't have to worry about it.
> As for security: iOS warns you that a keyboard extension may send your input to a remote server, but it doesn't prevent it.
See the documentation. (https://developer.apple.com/library/prerelease/ios/documenta... Table 11.1). There are two security models for keyboards. One type is allowed to talk to remote servers, and to communicate with its 'containing' app (that is the app it's installed with, not the app it's providing keyboard functionality to). Some keyboards need to be able to talk to servers for a full range of functionality. On installing this type, the user will be warned and asked if they wish to proceed. It hasn't been explicitly said, but in practice, this type will be subject to far stricter review.
The other type has no access to the network, or access to the containing app. This type is thus guaranteed not to leak data (barring bugs in the security model). This type is the default, but it restrains functionality enough that some people may opt for the other type.
> See the documentation. I admit I on glanced over the documentation. I dived right into implementing a custom keyboard and look around what's possible. That's when I got the warning about the remote communication. BTW, this was the keyboard tweak I was talking about: http://www.youtube.com/watch?v=R1caFI-hPkg
I am just using video as an example. I guess in general I am wondering if the new Apple framework would allow the host app to continuously stream content to an extension. So, I guess another example would be like a website. If it's a dynamic website in spanish, for instance, and I would like to use Bing to convert it to english. Would it be possible to design an extension that would dynamically translate the site, or would it be more of a static deal, where once translated, you have to execute the extension again to translate additional dynamic content that may have appeared on the same page.
Also, apple claimed that they are going to expose GPU to apps, so you can now write apps that can offload calculations to the GPU. Does that mean that we might finally see GPU decoding and encoding for none apple video formats, or is that still a no-no?
As for the GPU thing, I have no idea, but it seems like they're trying to be more open; I'd be kind of surprised if they said no.
Why wouldn't that be allowed, where it's feasible? Right now, there are lots of players which do software decoding of "non-Apple video formats" (I assume you're talking about h264? iOS doesn't support any of Apple's own video codecs, which are very old).
Further, Apple agrees that You will not be bound by the foregoing confidentiality terms with regard to technical information about pre-release Apple Software and services disclosed by Apple at WWDC (Apple’s Worldwide Developers Conference), except that You may not post screen shots, write public reviews or redistribute any pre-release Apple Software or services.
The NDA only applies to registered developers anyway, though. Additionally, this year anyone can watch all WWDC videos (discussing much if not all of what is mentioned in the linked article). The general public that can just access the page with the WWDC videos (without any login or any requirements to identify oneself or accept anything) is obviously not at all bound by any NDA at all.
Here are the videos, check them out: https://developer.apple.com/videos/wwdc/2014/ (sadly still requires the right software to watch)
I like this new more realistic and pragmatic approach to how they handle their NDA. In the past it was always a pain to listen to actual devs talk about the WWDC because they always felt like they had to be careful about what they said (though, to my knowledge, Apple never enforced that, but better safe than sorry, especially if you make your money on that platform). Meanwhile, everyone else was just talking about it freely, but exactly those people who most likely would have the most interesting things to say were silenced.
Apple's releasing more information than usual this year.