This brand new web service from Apple allows us to declare and edit our activities outside of our app.
Now teachers will see your activities without having to open your app first, and you can change them without pushing out an app update.
They also have a development environment, so test it out before going live!
We have 3 tasks:
You can examine the specifications for the JSON structure here.
There’s an unprecedented demand for digital education right now, and Apple has put millions of iPads into classrooms.
As an iOS developer, you can get your app into this huge platform by creating activities for Schoolwork — Apple’s assignment-management app.
The basic workflow is:
In this article, I’m going to…
Ultimately Apple wants to promote great apps. But they’re also motivated to showcase apps that make their platform look good. They’re competing with Android and trying to sell more iPhones, so if you can help them in their efforts, they’re happy to help you.
This isn’t that crazy of a concept. You see it everywhere. Target is going to promote items that get people in their stores. The movie theater is going to advertise the movie they think will pull in the most people.
Microsoft has done this with games since forever. …
Why were you expecting it to be?
Most likely — you want to know that your user is about to see a screen.
There are all sorts of useful reasons to want that. Maybe you want to track an analytics screen view, or trigger a data fetch to keep your screen fresh. Whatever your aim, someone probably told you to check out
viewWillAppear — Well, bad news. It’ll work for those goals, but only sometimes.*
The technical reason for when
viewWillAppear gets called is simple.
Notifies the view controller that its view is about to be added to a view…
Android has the Mockito framework where you can trivially make mocks and dictate return values. We don’t have anything that slick in Swift due to its reflection restrictions. There’s Cuckoo and SwiftyMocky, but I found them a bit onerous. They both generate helpful code (and I’m all for generating code), but way too much. I only want to generate code I’m going to use.
I’m going to show you how…
My journey towards creating code looks like this:
Naming the types correctly is the final obstacle during planning before I can get into the (fun 🤓) labor of coding. It’s like, ugh, I know the computer doesn’t care what I name my type. It’s all going to be stripped away by the time the machine is interpreting the instructions. My functionality won’t be affected. …
The docs for properly uploading data in the background are spread over several documents. Some limitations aren’t enforced by the API. Instead you’ll be notified about the proper usage with a crash. This article will take you on a journey of the many wrong ways to upload in the background before showing you the right way.
Let’s start with the quick and dirty solution you might stumble upon when you first search for how to upload data:
Notice how we used
dataTask there? You can certainly use that for uploading data. The key difference Apple describes between
In my last article, I made the case for why unit tests and code reviews are valuable. In this one, I’m going to show you how to set up an automated system to enforce those principles. Before allowing a PR to be merged, we’re going to require someone to review it and that all unit tests have passed.
Shouldn’t developers be running unit tests before submitting a PR? Yes, but there’s no shame in having guard rails. It’s common for experts to forget a detail or two. …
I’ve been a software developer for a long time (15 years), but only in the past few have I been in a professional collaborative engineering environment. Before that I was a solo developer working on my own projects. When I was solo, I became great at making the computer do what I wanted, but I didn’t have to deal with the complexities (nor gain the benefits) that come from being on a team. In this article I will highlight some of the biggest mindset shifts I’ve experienced and values I’ve come to embrace over the past year.
After joining a…
Why do this? Sometimes the job of a developer is to crank out some boilerplate code. It’s not all brilliant problem solving. Developers are great at recognizing patterns, and if it’s possible to automate something, we’ll do it.
I’m using SwiftPoet in a command line tool to translate Avro schema definitions into Swift structs that are customized to my liking. (To make your own — check out my article on how to setup a Swift Command Line Tool with a dependency.)