Appigo Todo (beginning with version 3.2) allows third party apps to import custom task types.
What are custom task types?
Custom task types in Todo allow users to perform specific actions on a task while viewing its detail screen. For example, Todo offers built-in task type of "Call a Contact." When a user specifies a contact to call, the details of a task then have a special phone image at the top left which, when pressed, allow the user to place a phone call directly from Todo to the contact specified. When you import a custom task type into Todo, you have the ability to specify an icon and custom action.
The power of creating a custom task comes by using URLs which Todo will use when users complete tasks or perform their action. The setActionForTaskWithAppDisplayName: method in the AppigoTask class allows you to specify your app's display name, a series of URLs and an image that will be displayed in Todo when a user views the task.
For means of illustration, we'll show an example of how Appigo's AccuFuel (a fuel economy tracking app) might use this to set up a reminder task to change the oil in a vehicle.
// // Create a new task // AppigoTask *task = [[AppigoTask alloc] initWithName:@"Jeep Liberty: Change Oil"]; // // Set the due date to be due in 5 days from today // NSCalendar *calendar = [NSCalendar currentCalendar]; NSDate *today = [NSDate date]; NSDateComponents *components = [[NSDateComponents alloc] init]; [components setDay:5]; NSDate *inFiveDays = [calendar dateByAddingComponents:components toDate:today options:0]; task.dueDate = inFiveDays; [components release]; // // These are the custom URLs that we want Todo to use when opening our // app. We will pass a reminder of "123" to Todo so that when the user // completes the task or performs the action on the task, AccuFuel will // be able to identify which reminder Todo is referring to. // NSURL *completionLaunchURL = [NSURL URLWithString:@"accufuel://com.appigo.todo.customtask/?method=task-completed&reminder-id=123"]; NSURL *actionLaunchURL = [NSURL URLWithString:@"accufuel://com.appigo.todo.customtask/?method=task-action&reminder-id=123"]; // // Prepare the custom action image that Todo will display as a button // to the left of the task name when the user views the task. When the // user taps this button, the actionLaunchURL will be called. As // mentioned in the API documentation, this action image MUST be 29x29 // pixels and MUST be in PNG format. Other sizes and types will be // ignored. // UIImage *actionImage = [UIImage imageNamed:@"accufuel-todo-action-image.png"]; // // Set up the custom task // [task setActionForTaskWithAppDisplayName:@"AccuFuel" withCompletionNotifyURL:nil withCompletionLaunchURL:completionLaunchURL withActionLaunchURL:actionLaunchURL withActionImage:actionImage]; // // Import this task into Todo // [AppigoPasteboard openTodoWithTask:task]; [task release];