Help users access and manage their external accounts from within your app, without requiring them to enter login credentials.


The Accounts framework provides access to user accounts stored in the Accounts database. An account stores the login credentials of a particular service, such as Twitter, that can be used as authentication for the service. By implementing the Accounts framework into your app, you do not need to be responsible for storing account logins yourself. Instead, the user can grant access for your app to use their account login credentials, bypassing the need to type their username and password. If no account for a particular service exists in the user’s Accounts database, you can let them create and save an account from within your app.




An ACAccount object encapsulates information about a user account stored in the Accounts database. You can create and retrieve accounts using an ACAccount​Store object. The ACAccount​Store object provides an interface to the persistent Accounts database. For each user, all account objects belong to a single ACAccount​Store object.


An ACAccount​Credential object encapsulates the information needed to authenticate a user.


The ACAccount​Store class provides an interface for accessing, manipulating, and storing accounts. To create and retrieve accounts from the Accounts database, you must create an ACAccount​Store object. Each ACAccount object belongs to a single ACAccount​Store object.


An ACAccount​Type object encapsulates information about all accounts of a particular type. You do not create account type objects directly. To obtain an account type, use the account​Type(with​Account​Type​Identifier:​) method or the account​Type property of an account object. Account Type Identifiers describes the identifiers for currently supported account types. You can also use the accounts(with:​) method to obtain all accounts of a particular type.

Extended Types


The type used for the name of a notification.