I have never made an API in objective-c, and need to do this now.
The “idea” is that I build an API which can be implemented into other applications. Much like Flurry, only for other purposes.
When starting the API, an username, password and mode should be entered. The mode should either be LIVE or BETA (I guess this should be an NSString(?)), then afterwards is should be fine with [MyAPI doSomething:withThisObject]; ect.
So to start it [MyAPI username:@"Username" password:@"Password" mode:@"BETA"];
Can anyone help me out with some tutorials and pointer on how to learn this best?
It sounds like what you want to do is build a static library. This is a compiled
.afile containing object code that you’ll distribute to a client along with a header file containing the interface. This post is a little outdated but has some good starting points. Or, if you don’t mind giving away your source code, you could just deliver a collection of source files to your client.In terms of developing the API itself, it should be very similar to the way you’d design interfaces and implementations of Objective-C objects in your own apps. You’ll have a
MyAPIclass with functions for initialization, destruction, and all the functionality you want. You could also have multiple classes with different functionality if the interface is complex. Because you’ve capitalizedMyAPIin your code snippet, it looks like you want to use it by calling the class rather than an instance of the class – which is a great strategy if you think you’ll only ever need one instance. To accomplish this you can use the singleton pattern.Because you’ve used a username and password, I imagine your API will interface with the web internally. I’ve found parsing JSON to be very straightforward in Objective-C – it’s easy to send requests and get information from a server.
Personally I would use an
enumof unsigned ints rather than aNSStringjust because it simplifies comparisons and such. So you could do something like:And then call:
Also makes it easy to check if they’ve supplied a valid mode. (Must be less than
NUM_MYAPI_MODES.)Good luck!