0:00:00Welcome to Under the Radar, a show about independent iOS app development.
0:00:04I'm Marco Arment.
0:00:05And I'm David Smith.
0:00:06Under the Radar is never longer than 30 minutes, so let's get started.
0:00:10Today what we want to talk about is accessibility.
0:00:14If you remember from our Q&A episode a couple weeks ago,
0:00:17we had a very brief discussion about accessibility,
0:00:21but I think it's a topic that deserves a much broader discussion
0:00:24than the few minutes you were able to give it inside of that.
0:00:27It turns out also that this week has National Global Accessibility Awareness Day, I think.
0:00:35I don't typically get into these kind of awareness days,
0:00:39but it's just coincided well, and it seemed a good thing to talk about.
0:00:44Because I think accessibility is a topic that is...
0:00:49It's an interesting intersection between something very...
0:00:55It's a very personal side of development,
0:00:57because it tends to interact with people at a level that is different
0:01:02than just our normal development.
0:01:04And I think as a result, accessibility can often become something
0:01:07that you can become very emotional about, or very...
0:01:09It takes a different level of importance than a lot of things.
0:01:13But before I dive into a bit more of what accessibility, the specifics of it,
0:01:17I think it probably makes sense to have a bit of an overview
0:01:20about what it is that we mean when we talk about accessibility.
0:01:23And in general, I would say it's best to think about accessibility
0:01:28as methods of development that make your app usable by specific communities
0:01:36within your user base.
0:01:37And that can take a lot of different uses, take a lot of different paths,
0:01:42depending on if there's different impairments that you may have to be working around,
0:01:45or to consider.
0:01:47But in general, accessibility and usability are one and the same.
0:01:52There are certain things that we might do in our application to make it usable,
0:01:56just for general usability with our general population who uses our application.
0:02:00And then accessibility, I think, is the extreme versions of those,
0:02:05where we have to make it usable by people who don't have all of the affordances
0:02:10that a typical user might have.
0:02:12And so these often get into things like visual impairments,
0:02:15physical impairments, auditory impairments.
0:02:17There's a variety of things that could make our app less usable for somebody.
0:02:21And so accessibility is about making it work for those users.
0:02:26We often tend to think of accessibility as something that's for other people,
0:02:31something that is for people who, "Well, we don't know anybody like that
0:02:34because we're all young, able-bodied developers," whatever.
0:02:37But the reality is almost everybody will use some kind of accessibility feature
0:02:41sometime in their lives.
0:02:43The most common example is text sizing, making text larger as you get older
0:02:49and as your eyes get worse, because that's just how our bodies work.
0:02:52And so it's good to think of accessibility not as a special accommodation
0:02:59for other people, but as a collection of features, tools, and design considerations
0:03:06that make the app usable for as many people as possible.
0:03:11Yeah, and I think that, too, it's the powerful thing of --
0:03:14I remember I used to think of accessibility as this --
0:03:18it's like there's this thing for other people that I do for them,
0:03:22which is a really kind of entitled, privileged way to see it.
0:03:27It's like, "Oh, I'm being so kind to this other community."
0:03:30But I'm very glad that I think over time I've developed that into a much more mature,
0:03:36actual understanding that accessibility is something that is for everybody.
0:03:41It is most beneficial and most impactful in special communities,
0:03:45but it just makes my app better for everybody.
0:03:48And I think about the last time I went and had my eyes dilated
0:03:53when I was having an eye exam, and suddenly I need to crank dynamic type
0:03:58all the way up to see my phone, and all of a sudden it's like,
0:04:02"Right, yeah, this impacts everybody."
0:04:05It impacts everybody to a different degree, but it's the same affordances
0:04:09and the same benefits that apply to everybody.
0:04:12Having that change in mindset that just makes your app better
0:04:17and more accessible for everybody,
0:04:20it changes the degree in which I was motivated to think about it.
0:04:24And I think it was also just so useful to change my --
0:04:28it's like this just as a person, that was a really useful thing.
0:04:32Any time you can get away from that kind of others versus yourself mindset,
0:04:38it's like, "No, this is just part of development because this is for everybody."
0:04:41All of my users benefit from this.
0:04:44It reminds me in a funny way of all of the episodes under the radar have a transcript.
0:04:50If you look in your -- wherever you're listening to this now, in the show notes,
0:04:53the top link is "episode transcript," and that is there in many ways
0:04:57for people who can't hear the episode.
0:05:00If you have auditory impairments, you may not be able to listen to us speak,
0:05:04and so podcasts can be very inaccessible to you.
0:05:07But if you have a transcript, you can read it if you're able to read.
0:05:10But it also has benefits for people who might just want to quickly browse something,
0:05:17if you want to search for something later.
0:05:19There's a tremendous number of other benefits that can come from something
0:05:22that is ostensibly an accessibility feature
0:05:25or something that is more particularly targeted, but it benefits everybody.
0:05:29And because it benefits everybody, it's also just smart business
0:05:33to design your apps to maximize accessibility.
0:05:36Because as you mentioned, it is kind of an extension of usability,
0:05:40and no one questions the value of good usability in like,
0:05:44"Oh, if you want your app to succeed, you should make it as usable as possible."
0:05:48That seems universally agreed upon.
0:05:50Accessibility is part of that, and yet accessibility kind of gets low priority
0:05:55or people don't talk about it as much.
0:05:58And I get that. I have been there.
0:06:01I have frequently in my career, I have shipped accessibility problems.
0:06:06I have shipped unlabeled voiceover buttons and stuff like that,
0:06:10or I've broken accessibility because I forgot to test it when I moved a view around or something.
0:06:15We've all made these mistakes, but I think it's important to keep it in mind more.
0:06:23And if you have any kind of testing process, any kind of formalized checklist
0:06:27or anything like that, to make it a part of that.
0:06:30And that will help you avoid shipping accessibility problems.
0:06:34Yeah. And I think too, probably to wrap up the overview,
0:06:37is to say that why should you development?
0:06:39Like if I was trying to convince somebody why making accessibility
0:06:42a big part of their development process.
0:06:44There's two main reasons for it.
0:06:46I think there's the first, which is the more just general,
0:06:50it's a good thing at a human level to make your apps very usable,
0:06:53which is a good general thing.
0:06:55But more specifically, it's good business.
0:06:58It's in the same way that localizing your application
0:07:01makes your app usable to broader communities,
0:07:05which allows you to make more money or have a more sustainable business
0:07:09because you have more users.
0:07:11Accessibility is the same thing, where you open up your app to be usable
0:07:16by these other communities that then allows you to broaden your user base,
0:07:20which is just good business.
0:07:22And thirdly, it's also just, Apple really likes accessibility,
0:07:26and they care a lot about it.
0:07:28And it is something that you will hear Apple talk about many times.
0:07:32They spend a tremendous amount of effort,
0:07:34clearly on the engineering side,
0:07:36making sure that the tooling and abilities that we have
0:07:40on the accessibility side are very robust.
0:07:42And so doing things that Apple cares about is going to benefit you
0:07:46in terms of featuring, in terms of your just general being a good member
0:07:52of that community and having the knock-on benefits that that brings with it.
0:07:56It's just a good business decision as well as a good human decision.
0:08:00We are sponsored this week by Linode.
0:08:03With Linode, you have access to a suite of powerful hosting options
0:08:06with pricing starting at just $5 a month.
0:08:08You can be up and running with your own virtual server
0:08:10in the Linode cloud in under a minute.
0:08:12Linode has hundreds of thousands of customers,
0:08:15all of whom are serviced by their friendly 24/7 support team.
0:08:18You can email them, call them, even chat over IRC in the Linode community.
0:08:22They know how important it is to get the help you want,
0:08:25and Linode also has a suite of amazing guides and support documentation
0:08:29to give you any references when you need it.
0:08:31So, for instance, if you wanted to learn details about how to set up
0:08:34your Linux server, Linode, you can even, if you search the web,
0:08:37these are public. Anybody can see these documentation.
0:08:39And I have frequently found when I've searched for some kind of,
0:08:42like, you know, Linux help thing, oftentimes the best answer
0:08:45and one of the top answers is a Linode document.
0:08:47They really know what you need, and they're really great at explaining it.
0:08:50And they have an intuitive control panel.
0:08:52This allows you to deploy, boot, resize, snapshot,
0:08:55and clone your virtual servers in just a few clicks.
0:08:58And they also now have two-factor authentication to keep you safe.
0:09:01So Linode has fantastic pricing options for every budget and every need.
0:09:05Their plans start at one gig of RAM for just five dollars a month,
0:09:09and they offer lots of other plans that go up from there,
0:09:11including high memory plans, depending on what your needs are.
0:09:14As listener of this show, sign up at linode.com/radar.
0:09:18That will support us and give you $20 towards any Linode plan.
0:09:21So on that base $5 plan, that's four months free.
0:09:24And with a seven-day money-back guarantee, there's nothing to lose.
0:09:27So go to linode.com/radar to learn more, sign up,
0:09:31and take advantage of that $20 credit, or use promo code radar2018 at checkout.
0:09:36Thank you so much to Linode for supporting the show.
0:09:39So I think now that it's sort of the general overview to the side,
0:09:42I think let's dive into some of the more specific types of accessibility
0:09:47and probably even more over from the developer perspective,
0:09:50some of the tools and abilities that we have as a result.
0:09:53And I think the main area to start with probably are visual accessibility tools that we can use.
0:09:59So visual impairments can come in all varieties.
0:10:02They can go all the way to the extreme forms of things like blindness,
0:10:05where a user is completely unable to view the interface that your app has,
0:10:11to the more minor, to things like we were talking about,
0:10:15where they have difficulty seeing things that are small,
0:10:18they have difficulties around differentiating between colors or contrast,
0:10:23and so you can run the gambit between those.
0:10:25But in general, because our apps at their core are fundamentally visual things,
0:10:32one of the key innovations of the iPhone was that it didn't have any buttons on the main screen,
0:10:39which means that our entire app is functionally something that is visual,
0:10:43that there's no tactile cues to it, or at least not intrinsically.
0:10:48And so there's a variety of different things that we have to take advantage of.
0:10:52And I think the first one and probably the biggest one that most people think about
0:10:55when they think of visual accessibility is the voiceover system in iOS,
0:11:01which if you've never used it, I highly recommend that you stop this episode now,
0:11:06go turn it on, and just play with your iPhone for a little while,
0:11:10because it is a fascinating alternative way to navigate an iPhone,
0:11:15that you can do essentially everything that you currently do with your iPhone,
0:11:19you can do without having--if you close your eyes and just swipe left and right
0:11:25and then double-tap to select things,
0:11:27you do a tremendous amount of capabilities of your iPhone without ever having to look at it.
0:11:33And so voiceover is that system.
0:11:35It's a system that is this alternative interface on top of the main interface,
0:11:40and you'll see it visually with these little cues,
0:11:43which obviously if you couldn't see them, they're not important,
0:11:46but they're ways for us as developers at least to see what's happening,
0:11:50where it's a way of navigating the screen hierarchically,
0:11:54so you move from element to element to element,
0:11:58and then rather than some of the--in a typical interface on the iOS,
0:12:04there's typically direct input, so wherever you--
0:12:07if you want to tap on a button, you have to find--
0:12:09your finger has to be directly over that button.
0:12:12What voiceover does is it takes that and adds a level of indirection
0:12:15where you have a selection state and then a tap state, for example.
0:12:20So you would swipe over until the button you want to select is selected,
0:12:25and then you double-tap on the screen,
0:12:27and so where you're swiping is irrelevant in voiceover,
0:12:30and so it creates that level of indirection,
0:12:32which then allows you to use it if you can't see the screen.
0:12:36I would even say--go a little harder on this--
0:12:38I would say actually learn voiceover.
0:12:41Figure out the basics, which it sounds intimidating.
0:12:45Trust me, it's not. It's really quite simple.
0:12:47It's like swipe right to go to the next item in the sequence,
0:12:50swipe left to go to the previous item in the sequence,
0:12:52double-tap the screen to select something.
0:12:55That's roughly all--that's the basics to all--
0:12:58that's all you need to know to start this.
0:13:00There are lots of other little tricks.
0:13:02One thing the developers should make sure your apps work with
0:13:04is if you present any kind of custom modals or sheets or anything like that,
0:13:09you want to support the accessibility perform escape gesture,
0:13:13which is two fingers on the screen, swipe left, right, left,
0:13:16and it's kind of like a zigzag, like you're crossing out the current screen,
0:13:20and that should dismiss or be like a cancel button
0:13:23on any kind of modal or sheet and everything,
0:13:25and that's something that the built-in stuff
0:13:27does not make it incredibly easy to support that
0:13:30if you don't know about it, but once you know about it,
0:13:32it's pretty easy.
0:13:33But I would say the basics of voiceover,
0:13:36swipe right, swipe left, double-tap to select,
0:13:39learn that, then actually cover your eyes
0:13:43or look away from the screen and try to navigate your app
0:13:46and try to actually use it and see,
0:13:48does the sequence of these things make sense?
0:13:51Are there things that are missing?
0:13:52Are there states that you can get in that you can't get out of
0:13:55because you can't leave the screen from voiceover
0:13:58or you can't leave this mode?
0:14:00Things like that are incredibly important
0:14:02for just the basics of voiceover testing.
0:14:04And voiceover also, not only does it serve visual impairments,
0:14:08but the same kind of mechanic, the same system,
0:14:11can also serve things like motor disabilities and things like that
0:14:14because it's using these same APIs and everything.
0:14:16So the voiceover accessibility API is the number one API
0:14:21to try to support after probably dynamic type,
0:14:24although ideally you shouldn't have to choose,
0:14:26you should really be supporting both.
0:14:27But those are the two big ones.
0:14:30And really, it does not take much to teach yourself voiceover
0:14:35enough to be able to go through your app
0:14:38and just see if there's any major pain points.
0:14:40And I would even extend that to say,
0:14:42actually, if at all possible, seek out voiceover testers,
0:14:46seek out people who are full-time voiceover users
0:14:49on their phones as your beta testers.
0:14:52I made tons of voiceover mistakes
0:14:54until I had voiceover people on my betas,
0:14:56and it made all the difference in the world.
0:14:58I know how an interface should look.
0:15:01I have a pretty good idea of how the app should be laid out visually.
0:15:05But because I'm not a full-time voiceover user,
0:15:08not only do I not run into those problems if they exist,
0:15:11but I don't really have a good concept of what's good.
0:15:14And so it's important to have full-time voiceover users,
0:15:17if at all possible, testing your app and telling you,
0:15:20not only if they see any problems,
0:15:22but also what's good design, what's bad design?
0:15:25What works, what's a pain,
0:15:27what's more complicated than it needs to be?
0:15:29One of the questions I had was,
0:15:31when I was arranging my now-playing screen elements in voiceover,
0:15:36and I thought it would make more sense
0:15:39to have the most frequently used things come first
0:15:43in the sequence of things that you're iterating through,
0:15:45even though that's not how the screen is laid out.
0:15:48If you just try to read the screen left to right, top to bottom,
0:15:51that isn't how the screen is laid out.
0:15:53The most frequent controls are on the bottom, actually.
0:15:55So in the sequence of the naively ordered controls,
0:15:58they would almost be last.
0:16:00But I was like, "Don't you want play/pause first,
0:16:03and skip forward second, and skip back third?"
0:16:06Stuff like that.
0:16:07And so I just asked my voiceover testers,
0:16:09"Hey, would this be weird? Would this be unusual?
0:16:13Would this be bad or off-putting to arrange these in a custom way?
0:16:17Or is that a useful thing to do?"
0:16:20Because I honestly don't know what's normal.
0:16:23What would throw somebody off as being weird or unexpected,
0:16:26versus what's a nice convenience.
0:16:29And I got great feedback on stuff like that.
0:16:31So anything you can do to have voiceover testers,
0:16:34and this applies to all other types of accessibility APIs, too,
0:16:38have testers that use different dynamic type sizes.
0:16:41My dynamic type implementation in Overcast is still not perfect.
0:16:44I only know that because people tell me,
0:16:46because I have testers who actually use it and tell me.
0:16:48So it's just incredibly valuable to have that kind of actual feedback,
0:16:52because it is important for you as a developer to try to learn,
0:16:57to test out your app in these different scenarios,
0:17:00and learn the basics of voiceover so you can navigate it and stuff like that.
0:17:03But you're never going to use it as much,
0:17:06and find as much good and bad stuff about your implementation,
0:17:10or have as much of a sensibility of what works and what doesn't,
0:17:13as a full-time user of these technologies.
0:17:15So if at all possible, involve people who use them in your testing.
0:17:18And I'd say, too, one of my biggest recommendations
0:17:22for anyone who is going to be at WWDC,
0:17:24who has a ticket and is going to be inside,
0:17:26is to make an appointment for the Accessibility Lab.
0:17:28Yes.
0:17:29Where typically, the way I've gone every year,
0:17:31I always find a reason to go, even if I don't have a pressing reason,
0:17:34because I learn so much from the experience,
0:17:37because the way it's typically set up is they have a typically sighted user
0:17:41and a non-typically sighted user,
0:17:43someone who has a vision impairment of some kind from Apple,
0:17:47who will sit down and they'll go through and use your app.
0:17:50And you get to watch and take notes on how they use it,
0:17:55what they see, what they're hearing,
0:17:57the speed at which they're interacting with.
0:17:59And that in-person experience, I found to be tremendously helpful
0:18:03for understanding things that you wouldn't really understand otherwise.
0:18:07I've learned a lot around how verbose I want to make my button
0:18:11accessibility labels be, for example.
0:18:14Spoiler, not.
0:18:16Yeah, you get this, where they're like, "No, no, no,
0:18:19the shortest amount of text possible.
0:18:21I don't need to be having this big, long thing where,
0:18:24so for a lot of my apps, it's like I'm displaying user data.
0:18:27And so for a while, I would have these usability labels
0:18:31that would be like, "Your steps on Thursday, May 17th, 2018,
0:18:36were 10,163."
0:18:39And she's like, "I don't need that. I know where I am in the app.
0:18:43You can just say Thursday's steps, 10,383."
0:18:46And that's all they wanted, because they're very used to,
0:18:51they have a tremendous ability, you develop a tremendous ability
0:18:54to know where you are in the hierarchy,
0:18:56and they have to wait to listen to what's going on
0:19:01before they can make their next action.
0:19:03And so if you make those labels really long,
0:19:05it's hard for them to navigate quickly.
0:19:07Also, things like I learned from going to the accessibility lab
0:19:10was like putting the most important information up front,
0:19:13not at the end.
0:19:15And so actually, I think what I do in my apps,
0:19:18I think I say the number of steps first,
0:19:20and then I say the date in certain circumstances,
0:19:23because that's actually what they're interested in,
0:19:25rather than the date.
0:19:27Because once they have what they need,
0:19:29they can move on or swipe to the next thing,
0:19:31or if this is not the right thing.
0:19:33But I highly recommend going and seeing that in person.
0:19:35Or if you know somebody in person who has a vision impairment
0:19:38and uses VoiceOver, it's tremendously effective.
0:19:41Because at its core, VoiceOver is,
0:19:44it's almost like painfully simple to implement on a developer side.
0:19:48Every UI control in iOS has accessibility baked into it,
0:19:53and most of what you're doing when you're making your app work well
0:19:57with VoiceOver is making sure that you set accessibility labels
0:20:00for everything so that when an element becomes the focused element,
0:20:04that's what VoiceOver reads.
0:20:06And so you need to have a description of what that is,
0:20:10and then making sure that the hierarchy within your app makes sense,
0:20:14so that as you swipe left and right,
0:20:16it's logically moving through the hierarchy of your app,
0:20:20rather than it's, in general, it does a pretty good job of doing that,
0:20:24because it's sort of working its way along visually,
0:20:27based on sort of X, Y coordinates,
0:20:29but sometimes you need to override that
0:20:32with an orientation that makes sense.
0:20:34So as an example, like in Podometer++,
0:20:37I have a bunch of bar graphs showing the history of your step counts.
0:20:42In the default implementation, they would go from left to right,
0:20:47which in my case would be oldest to newest,
0:20:50whereas for an accessibility perspective, I flip that around.
0:20:53And so the newest is the earliest one,
0:20:56and then it works its way back in time,
0:20:58even though visually that's flipped.
0:21:00Things like that are basically all you have to do
0:21:04to make good use of VoiceOver,
0:21:06good labels and good hierarchy,
0:21:08and you'll be like 99% there,
0:21:10and then get feedback from users as best you can,
0:21:12either in person, at the Accessibility Lab,
0:21:15beta testing, wherever you can.
0:21:17- And I can't stress enough how important it is to just try it.
0:21:20Just try your app.
0:21:22There's a few things you can do.
0:21:24You can set the triple tap home button shortcut
0:21:27to turn on and off VoiceOver.
0:21:29And that's something I've found
0:21:30after years of accidentally triggering that
0:21:33when I meant to double click the home button
0:21:35and hearing VoiceOver on in the middle of the world.
0:21:38(laughs)
0:21:39I turned that off because I learned
0:21:41that you could just turn it on and off via Siri.
0:21:43So you can just ask Siri, "Turn VoiceOver on.
0:21:45"Turn VoiceOver off."
0:21:46And it takes two seconds and no setup to do that,
0:21:49so it's great.
0:21:51And then just try it because usually when you mess up,
0:21:54it's usually like, oh, you have some kind of custom button
0:21:57that doesn't have the standard label text.
0:21:59It has some other way to display what it is,
0:22:01and you didn't put in a label.
0:22:02So you scroll past it with VoiceOver,
0:22:04and it just says, "Button, button."
0:22:06And it's like, oh, god, it's like head-smackingly obvious.
0:22:10It's embarrassing how easy it is to fix that.
0:22:12It takes two seconds to add an Accessibility label,
0:22:15and you fix this incredibly embarrassing Accessibility bug.
0:22:18So just actually trying it and testing it
0:22:21gets you so far, so much of the way there.
0:22:23I'd also say if you don't know
0:22:25or can't access any visually impaired users
0:22:28who use this kind of stuff,
0:22:30at least what everybody can do is look on YouTube
0:22:32and try to look at videos of screen reader users
0:22:35actually using their screen readers.
0:22:37And that should give you some sense of how they navigate,
0:22:39how quickly they navigate,
0:22:41what kind of phrasing and wording you should use,
0:22:44how brief or verbose should you be, things like that.
0:22:47It's not a great solution, but it's better than nothing.
0:22:50- The next kind of type of accessibility
0:22:52that's probably worth talking about
0:22:53is just around things like dynamic type,
0:22:56which I think is a simpler topic,
0:22:58where dynamic type is inside of iOS.
0:23:00You can set the system text size queue in the Settings app
0:23:06or then in the Accessibility app
0:23:08if you want really, really, really big text.
0:23:11And this is something that I've noticed
0:23:13just in normal life is used incredibly widely.
0:23:19Voiceover use is probably a relatively smaller part
0:23:22of your user community.
0:23:24Dynamic type is a very large proportion
0:23:26of your user community.
0:23:28And I think in general, dynamic type is pretty straightforward
0:23:30because it just makes everything bigger.
0:23:33And especially this has gotten easier
0:23:35as we have to support multiple phone sizes,
0:23:38that having more flexible, flowable layouts
0:23:40is just something that I think in general
0:23:42we kind of have to do because we have to make an app
0:23:45that works on a 5S screen
0:23:48all the way up to an 8+ screen.
0:23:51And so you have to be flexible anyway.
0:23:54And so dynamic type is just a way of saying,
0:23:56"Make my text bigger, make my text smaller,
0:23:59and as it gets bigger, making sure that it doesn't break,"
0:24:01is functionally what dynamic type is.
0:24:03And I think it's just a question
0:24:05of making your app flexible in layout
0:24:07so that when you crank up dynamic type,
0:24:10if everything just becomes--
0:24:11you get the first letter and the last letter
0:24:13and then a bunch of ellipses in the middle
0:24:15because everything's getting truncated.
0:24:17You didn't do dynamic type right.
0:24:19So it's something to try and to make sure
0:24:21that your app responds reasonably well to
0:24:24as well as opting into supporting it.
0:24:27Some controls will automatically do this.
0:24:29Like, certain UI label setups will just automatically use it,
0:24:33which you want to make sure you know
0:24:35that they're going to opt into.
0:24:36But it also just--in general, you can ask the system
0:24:39for what the dynamic type size is right now,
0:24:42and even if you're doing custom rendering,
0:24:44you could respond to it appropriately.
0:24:47And lastly, I think there's some elements around accessibility
0:24:52for things like colors and button shapes,
0:24:56things that users who may have difficulty
0:24:58with low-contrast displays.
0:25:01And so it's just in general--
0:25:02it's always the general rule that I try and keep to is
0:25:06color is a powerful way to communicate something to my user,
0:25:10but it shouldn't be the only way that I communicate with my user.
0:25:13So if you have--if I need to differentiate something
0:25:18by only with color, then I'm making an interface
0:25:23that's going to be confusing to users who have difficulty
0:25:26differentiating colors or similar impairments.
0:25:29And in general, that's just probably bad design.
0:25:31I mean, this came up a lot around the iOS 7 redesign,
0:25:35where color became the thing that we used
0:25:37to differentiate buttons from just text.
0:25:40And so I think in general, I tend to prefer actually making buttons
0:25:44with some other affordance to them,
0:25:46whether that be a rounded rectangle around them
0:25:48or some indication, maybe an underline,
0:25:51to make it seem that this is something different,
0:25:53that it isn't just the color that makes it different.
0:25:56Finally, I think I'd like to end with a plea to Apple.
0:26:01There is no way in the App Store for users of apps
0:26:06or buyers or potential users of apps
0:26:08to know whether an app has accessibility compatibility or not.
0:26:12There's no way to know if an app has been tested for voiceover.
0:26:15There's no way to know if it responds to dynamic type,
0:26:18things like that.
0:26:19And so if you are a user who uses these technologies,
0:26:21who needs these technologies, you're taking a risk.
0:26:24You have no way to know whether an app that you're interested in
0:26:27possibly buying will work for you at all or not.
0:26:30The App Review tests apps for other things like crashing,
0:26:33things like that.
0:26:34So people can be sure that you're downloading an app
0:26:36that will work if you don't need these technologies.
0:26:39If you do, you have no way to know.
0:26:41It's almost as if you don't have App Review for yourself.
0:26:43And I wish Apple would either test for the basic accessibility technologies
0:26:50like dynamic type and voiceover during App Review
0:26:52and actually reject apps if you didn't do it,
0:26:54which would also save us from shipping embarrassing shortcomings,
0:26:57either require that or allow developers to opt in,
0:27:01to optionally have that testing applied to us
0:27:04and display some kind of little icon in the App Store page
0:27:07for our apps that we are accessible.
0:27:10I wrote a blog post to this effect a couple years ago.
0:27:12It didn't get anywhere yet, but I still would like that
0:27:16to be considered by Apple because if you think about
0:27:20the value of App Review for mainstream purposes,
0:27:24this is a pretty big thing that it serves that same kind of goal,
0:27:27like making sure, giving people the assurance that apps will work for them
0:27:33in a basic way, I think that would go a long way in accessibility as well.
0:27:37Oh, sure. I also love the thought of it being an added incentive
0:27:43for developers to adopt accessibility in a robust way within their applications.
0:27:48Exactly.
0:27:49If there is an additional flag or gold star that you get in the App Store
0:27:55as a result of doing it, all the better.
0:27:58That just seems like that would be a wonderful win.
0:28:01Thanks for listening, everybody, and we'll talk to you next week.
0:28:03Bye.
0:28:05[BLANK_AUDIO]