Last night, Apple rejected a new app that I had submitted to the iMessage App Store. I am not writing this to complain about the rejection1, but to talk about how it could have been avoided.
The app was pretty simple; it let you use Apple’s emoji as stickers in iMessage. It did this by creating an image for each emoji at runtime by calling draw(at: withAttributes) on an NSString that contains the emoji. I then made that image available as a MSSticker.
Before I even started writing the app, I knew that there was a chance that I was going to get rejected for using Apple’s emoji (even if I was not actually including images of the emoji in the app binary).
Even though I knew I was working in a potentially gray area, I decided to go ahead and write the app. The risk was pretty low because I know I could get the app finished in just a few days. Plus, I just wanted the app to exist; I liked the idea of being able to use the entire emoji set as stickers.
So all things considered, the potential reward of having the app and maybe making a little bit of money2 was worth the risk of a couple of evenings worth of development.
The problem here is with apps that are larger scale. If I came up with a larger scale app idea that lives in the App Store approval gray area, I probably would just not write it.
I think that Apple needs to have some feedback mechanism in place where developers can ask questions and get clear answers about the legality of a particular app concept before they spend months building it.
This exchange would have saved me two weeks of work that could have been spent working on other app ideas:
“Can I build an app that lets me use Apple emoji as stickers in iMessage?”
A system like this would benefit both Apple and developers. Developers would be able to proceed at building an app with confidence or be able to spend their time on something that could get approved.
Apple would be able to see how developers wanted to use certain APIs months earlier. If they are asked something about a use case that they never considered, they can decide earlier whether or not that use case should be allow (and if appropriate, update the App Store guidelines accordingly). This would be especially useful during the summers when developers are building new apps and features using APIs that are still in beta.
To be clear, I am not proposing any type of pre-approval of apps – apps should still be thoroughly checked to see if they follow all of the rules. There just needs to be an official way to find out if something fits within those rules without having to build and entire app and submit it to the App Store3.
A couple of years ago, I would have said that a change like this would never happen. However, the App Store has seen significant improvements over the last year since Phil Schiller has taken over. Under his leadership, the App Store has seen big changes that benefit both developers and customers. After seeing all of the recent App Store changes, I would not be surprised to see a system like this implemented.
In the meantime, I am able to satisfy my goal of using Apple’s emoji in my iMessage conversations, even if my friends can not use them to respond back 🙃.
Update: Just to be completely clear, I am not complaining about my app getting rejected. I am 100% okay with that.
I am just using my rejection as an example for how the App Store approval process could be improved by adding more clarity and transparency for what is allowed and what is not.
And I do mean a little bit of money. This is the iMessage App Store we are talking about after all. ↩
Quick aside about TestFlight: I had four builds of my app submitted through TestFlight. I submitted the first one after about two days of development.
A human has to review the first TestFlight build, so this issue should have been caught then.
If an app is doing something that it would get rejected for when it is reviewed in TestFlight, they should let the developer know then. This is not a substitute for being able to simply ask questions, but it is better than nothing. ↩
I have a couple of iOS 11 app ideas that I want to work on over the summer and the idea of developing them on my 2011 MacBook Air was not appealing. Luckily, Apple had just refreshed their Mac lineup; so it was a great time to buy.
I do about 95% of my work at home from a desk, so the iMac would make a lot of sense for me. My ideal setup would be an iMac1 on my desk and a small laptop for those times when I need to work outside of my office.
After thinking about it some, I decided that (assuming I could only get one of them) the laptop makes the most sense for the flexibility2.
So I bought a 13” MacBook Pro with Touch Bar3. It would be a perfect secondary computer, but is modern and powerful enough that it could be my primary Mac for the next couple of years if my new app ideas don’t make any money.
So after using it for a couple of days, here are my first impressions. This is my first new Mac to use since 2012, so some of these things have been around for awhile; but they are new to me.
This is easily the best looking Mac I have ever seen. It immediately made my 2012 MacBook Pro that I use at work seem ancient.
I has the same footprint as the 11” MacBook Air. Price aside, this is the Retina MacBook Air that everyone wants.
I love the larger trackpad. The fake click using haptics completely fools me. Using Force Touch to look up words and to preview links seems more useful than 3D Touch on the iPhone4. My only wish here is that it supported the Apple Pencil.
I may be alone in this one, but I like the keyboard. The less key travel, the better. I would not be upset if the next Magic Keyboard uses this keyboard5. The only downside here is that the keyboard is definitely louder than before. This may get better as I learn to not hit them as hard.
The Touch Bar is a net positive, but it is not perfect. The first thing I noticed is that the resolution is pretty low. Everything looks a little fuzzy.
Sliding for volume adjustment is nice.
I don’t mind the esc key being digital, but I wish they extended the left side of the Touch Bar to be flush with the keyboard. It is inset just enough that I miss it about half the time. I keep missing the key and getting stuck in vi.
The app-specific area so far seems like it is mainly used for keyboard shortcuts. This is useful for apps that I am less familiar with.
The Touch Bar is visually subdued enough that I do not really notice the constant context-changing on my keyboard as I move around the system.
Having TouchID on here is great. Now I just have to make sure I don’t forget my 1Password password6.
Related, being able to use my Apple Watch to sign in is cool; but TouchID is way faster so I just use that. Hopefully the Apple Watch login gets faster in the future. Ideally I would be signed in and on the desktop by the time my screen turns on when I open the lid.
All of the new features above are fun, but the reason I bought it was to help me do app development faster. When using my MacBook Air, I was spending about half of my time waiting on the computer. When you only get an hour or two a day to work on a side project, your time is valuable.
I have had two nights of using this MacBook Pro for development and I have not had to wait on it yet. So for that alone, this Mac is a win in my book.
My first post on this site was was an article looking forward to WWDC 2016, so I could not let WWDC happen this year without me giving my thoughts on it again.
Xcode 9 and Swift 4
Most of these are a carryover from last year.
Swift Package Manager in Xcode: This one seems seems pretty likely this year. I am not going to miss using Carthage and CocoaPods.
Better Swift support in CoreData: The CoreData API was written to be used from Objective-C. It would be nice to have a wrapper that was more was type-safe and less stringly typed. Bonus points if we can natively use Swift structs instead of NSManagedObject subclasses.
Run Server Side Swift Code on iCloud: Apple has made some big jumps in the last few years with CloudKit, but they will not catch up to the utility of AWS or Azure until we can run our own code on their servers. The Swift Server API Workgroup makes me think that this is possible this year.
Xcode for iOS: I am going to buy my next portable development computer soon. I would much rather that computer be an iPad than a MacBook Pro. Make it happen Apple.
Swift refactoring: Please.
iOS is the Apple platform that I interact the most with and care about the most. It is also the area that I feel does not need as many big changes.
Better Sticker UI in Messages: I use a lot of Sticker apps, but they are a hassle to manage. It takes way too many taps to get from the main messaging UI to any particular Sticker pack. Discoverability is particularly bad. As someone with a monetary interest in this space, I hope that it gets better.
Revamped multitasking on iPad: Frederico Viticci of MacStories had a great video showing what this could look like.
Finder: I was never the type to want this before, but as I try to use my iPad to do more, I find myself wanting a better system for file management. Frederico covered this one in his iOS 11 video linked above.
iCloud-powered reminders app: This is a carry-over from last year. The recent release of Things 3 (iPhone/Apple Watch | iPad | Mac) made this a lower priority for me.
Cross platform App Store: I should be able to see and buy Mac and iPad-only apps from the App Store on my iPhone.
UI Refresh: I would want something that builds on the visual design language of system apps like Music, TV, News, and Home.
Shared iCloud Photo Libraries: Since having our son, not having a shared photo library has become a bigger and bigger pain point.
More SiriKit domains: I mainly want to see support for task management apps and media (podcast) apps.
Global Audio Up Next Queue: This one is a bit out of left field, but it would be cool to add audio from different sources to my Up Next queue. The use case would be starting an Overcast podcast when an Apple Music album ends.
The Mac is awesome, so this list is short.
UIKit: Make it easier to write cross-platform apps.
iMessage App Store: I do most of my texting from my Mac and I really miss having access to my Stickers.
Most of the changes that I want to see on the Apple Watch will most likely require new hardware, so this list will be short.
Kill the honeycomb app picker: This has always been the worst part of the watch. watchOS 3’s dock made it so I did not have to use this screen much, but I would still like for it to be replaced by something simpler.
Move Now Playing from the Dock to Control Center: The Now Playing card that is in the Dock really does not fit there. It is the only item in the Dock that is not an app. iOS already has a model for this: Swipe on Control Center to access Now Playing.
Volume Control with Digital Crown: Since Time Travel is defaulted to off, the Digital Crown does not do anything for most watch faces. I want an option to have the Digital Crown control the volume when you are on the watch face. This would make using AirPods much nicer.
More API Focus on doing things without the phone present: This hard been a trend with every new version of watchOS so far:
watchOS 2 moved the watch extensions from running on the phone to running on the watch.
watchOS 3 moved networking directly to the watch.
I expect watchOS to continue moving in this direction so that apps on the watch will immediately be useful when Apple eventually launches an Apple Watch with cellular networking1.
User Profiles: More so than almost any other electronics device, a TV is meant to be shared by multiple people. The AppleTV needs to break out of its single user silo. Each person in the house should have their own Up Next queue in the (horribly-named) TV app.
Live Video tab in TV app: I want a list of all the live video available to me across the AppleTV. They could open into their respective apps the same way the On Demand does now.
YouTube in the TV App: File this under Not Going to Happen, but having channels that I am subscribed to in YouTube show up in Up Next would be awesome.
Picture in Picture: Seems obvious (then again, it seemed obvious last year too).
Push Notifications: Weather alerts, live shows starting, sports, and breaking news seem perfect for the TV.
Amazon Prime: This one looks like a sure thing. However, it will be pretty disappointing if they do not support the Up Next queue in the TV app.
Netflix in Up Next: I doubt this is going to happen, but this is a Wish List.
The AirPods are the best 1.0 product that Apple has shipped in years2, but there are a couple of small software changes I want.
More Gestures: I want play/pause to be a single-tap so I can keep Siri as a double-tap.
Support auto-resume when listening with one ear: If I am only listing to one AirPod (something I do often at work), taking it out currently pauses the audio. However, the auto-resume only works when listening to both AirPods. I want it to work if you are only listening to one AirPod.
This one is looking more and more likely. I am pretty excited about this product space, but I hope that Apple makes some improvements to what to what Amazon and Google are offering:
Battery: I hope that the Siri Speaker is able to be used when not connected directly to power. I want to be able to take it outside when I’m grilling or when I’m playing with my kid and dogs in the front yard.
W1 Chip: In addition to using it for Siri, I want to use it as a Bluetooth speaker. My AirPods have completely ruined every other Bluetooth audio device, so I hope the Siri speaker follows suit and has the W1 chip.
Horizonal or Vertical: It would be nice if they designed so that I could stand it up (like the Amazon Echo) or lay it flat (like the Beats Pill).
There is a lot they could do here, but I have one specific prediction.
I’m going to end with a vague hope that would cover most of Apple’s product lines.
I want Apple to improve the way all of their products communicate with and interact with each other.
Some examples of ways this could be realized:
– I should be able to control the media playback of any device from my Apple Watch, not just my phone. Similarly, I should be able to control the media playback of my iPad from my phone4.
– When I send videos to my Apple TV from my phone, it should work more like Handoff than AirPlay. Once I send the video, my phone should no longer be needed for playback.
– If my Apple Watch is unlocked and my phone is close, then it should be unlocked too (similar to the Mac).
This is not even close to an exhaustive list. I basically want my devices to be more aware of each other and more aware of the fact that I use them together5.
When I didn’t get my WWDC ticket earlier this year, I felt pretty okay about it. Now that the conference is almost here, I (unsurprisingly) really wish I was going.
Even just watching it here from Oklahoma, it should be a good time.