- 
                Notifications
    You must be signed in to change notification settings 
- Fork 22
Server errors
        Andrey K edited this page Feb 13, 2019 
        ·
        25 revisions
      
    The MobileMessaging SDK wraps server error information into NSError.
The following example demonstrates how an error code and a message attributes may be retrieved from the error object:
if let user = MobileMessaging.getUser() {
    user.emails = ["email@invalid"]
    MobileMessaging.saveUser(user, completion: { error in
        print(error.mm_code) // prints "EMAIL_INVALID"
        print(error.mm_message) // prints "Invalid email: email@invalid"
    })
}| Error code | Error message | Explanations | 
|---|---|---|
| EMAIL_INVALID | "Invalid email: {email}" | Emails should have valid format (https://tools.ietf.org/html/rfc2822) | 
| PHONE_INVALID | Invalid phone number: {number} ({details}) | Phone number should have valid format (https://en.wikipedia.org/wiki/E.164) | 
| USER_IDENTITY_INVALID | UserIdentity does not have any identity field set | UserIdentity must have at least one field (phone/email/externalUserId) set, SDK takes care of it by providing failable initializer for you. | 
| USER_MERGE_INTERRUPTED | User update violates unique key constraint | This error may happen when you try to saveUserwith unique attribute that refers to another Person record on the server | 
| PERSONALIZATION_IMPOSSIBLE | Installation is not depersonalized. Personalization is prohibited | This error happens when you try to re-personalize current installation using UserIdentity that is currently identifies another person. In such case you need to depersonalize first. To make both operations (depersonalize and personalize again) at once use MobileMessaging.personalize(forceDepersonalize: true, ...)API. | 
| AMBIGUOUS_PERSONALIZE_CANDIDATES | Several users satisfy supplied user identity | This error happpens when you try to personalize current installation with a UserIdentity matching several existing persons. This operation cannot be done by design. We recommend either to use only one field for personalization as a best practice, or to pay very close attention to what you personalize your installations with - keep it consistent and unique. | 
| USER_DATA_RESTRICTED | User update access is restricted | This error happens when you use saveUserwhereas on Infobip Portal you set "Restrict saving sensitive data from SDK" | 
| PUSH_SERVICE_TYPE_INVALID | Provided push service type is not supported | We support only APNS and GCM push service types. SDK takes care of providing valid service type for you. | 
| REQUEST_FORMAT_INVALID | {Field name} should be {supported type} | Predefined user/installation data attribute has wrong type. SDK takes care of types for predefined user/installation attributes for you. | 
| APP_CODE_MISSING | Application code not provided | Application code is a mandatory parameter for all server requests | 
| PUSH_REG_ID_MISSING | Push registration id not provided | Push registration ID is required for most user/installation data APIs such as saveUser, saveInstallation, fetchUser, fetchInstallation etc. SDK takes care of providing the ID for you. | 
| Error code | Error message | Explanations | 
|---|---|---|
| 0 | Something went wrong [10000] | This is really unknown, and most likely we are already working to fix things | 
| 1 | Invalid Application Id [10001] | The application code you provided to the SDK doesn't exists | 
| 2, 4, 7, 8, 10, 11, 12, 13 | Internal service error [xxxxx] | There is nothing you can do with these errors, except retrying later. Most likely we're already fixing stuff, but you are always welcome to ask for support at [email protected] | 
If you have any questions or suggestions, feel free to send an email to [email protected] or create an issue.