Other iOS APIs

Adjust the log level

You can control the amount of log messages that show up from App Center in the console. Use the setLogLevel:-API to enable additional logging while debugging. By default, it is set to MSLogLevelAssert for the App Store environment and MSLogLevelWarning otherwise.

To have as many log messages as possible, use MSLogLevelVerbose/MSLogLevel.Verbose.

[MSAppCenter setLogLevel:MSLogLevelVerbose];
MSAppCenter.setLogLevel(MSLogLevel.Verbose)

Identify installations

The App Center SDK creates a UUID for each device once the app is installed. This identifier remains the same for a device when the app is updated and a new one is generated only when the app is re-installed. The following API is useful for debugging purposes.

NSUUID *installId = [MSAppCenter  installId];
var installId = MSAppCenter.installId()

Disable all services at runtime

If you want to disable all App Center services at once, use the setEnabled API. When disabled, the SDK will not forward any information to App Center.

[MSAppCenter setEnabled:NO];
MSAppCenter.setEnabled(false)

To enable all services at once again, use the same API but pass YES/true as a parameter.

[MSAppCenter setEnabled:YES];
MSAppCenter.setEnabled(true)

Check if App Center is enabled

You can also check if App Center is enabled or not.

[MSAppCenter isEnabled];
MSAppCenter.isEnabled()

Check App Center SDK version at runtime

You can get the version of App Center SDK that you are currently using.

[MSAppCenter sdkVersion];
MSAppCenter.sdkVersion()

Use custom properties

App Center allows you to define custom properties as key value pairs in your app. You may use custom properties for various purposes. For instance, you can use custom properties to segment your users, and then send push notifications to a specific audience.

Note

Only devices that have Push successfully registered are matched in audiences. As a consequence, the iOS simulator can not be used to test audience matching.

You can set custom properties by calling the setCustomProperties API. A valid key for custom property should match regular expression pattern ^[a-zA-Z][a-zA-Z0-9]*$. A custom property's value may be one of the following types: NSString, NSNumber, BOOL and NSDate.

MSCustomProperties *customProperties = [MSCustomProperties new];
[customProperties setString:@"blue" forKey:@"color"];
[customProperties setNumber:@(10) forKey:@"score"];
[MSAppCenter setCustomProperties:customProperties];
var customProperties = MSCustomProperties()
customProperties.setString("blue", forKey: "color")
customProperties.setNumber(10, forKey: "score")
MSAppCenter.setCustomProperties(customProperties)

Note

If you set the same custom property more than once, previous values will be overwritten by the last one.

You may remove any custom property by calling the clearPropertyForKey API. This will only remove the value of the property for a device. It will not remove the property name from App Center portal.

MSCustomProperties *customProperties = [MSCustomProperties new];
[customProperties clearPropertyForKey:@"score"];
[MSAppCenter setCustomProperties:customProperties];
var customProperties = MSCustomProperties()
customProperties.clearProperty(forKey: "score")
MSAppCenter.setCustomProperties(customProperties)

Storage size

When using the App Center SDK, logs are stored locally on the device. Large logs can take up a lot of space, so you may choose to limit the size of the local database. It is also useful in conjunction with the pause and resume APIs. If you expect to be paused for a long time, you can use a larger database size to store more events.

Use the setMaxStorageSize API to set the size of the local DB. The API is asynchronous, and the completionHandler is called when you start App Center services. For this reason, setMaxStorageSize must be called before your call to [MSAppCenter start:...]. You may only call the API once.

// Use 20MB for storage.
[MSAppCenter setMaxStorageSize:(20 * 1024 * 1024) completionHandler:^(BOOL success) {
    if (!success) {
        // The success parameter is false when the size cannot be honored.
    }
}];
[MSAppCenter start:@"{your secret}", withServices:@[[MSAnalytics class]]];
// Use 20MB for storage.
MSAppCenter.setMaxStorageSize(20 * 1024 * 1024, completionHandler: { (success) in
    if !success {
        // The success parameter is false when the size cannot be honored.
    }
})
MSAppCenter.start("target={token}", withServices:[MSAnalytics.self])

If you don't set the max storage size, the SDK uses a default max size of 10MB. The minimum size you are allowed to set is 20KB.

Note

The actual max storage size may be slightly higher than the value you have chosen. SQLite rounds the size up to the next multiple of the page size. The App Center SDK uses a page size of 4KB.

Unsuccessful API calls

There are many reasons the completionHandler call may return false.

  • The specified size is an invalid value (less than 20KB or greater than 140TB).
  • The current database size is larger than the specified maximum size.
  • The API has already been called. You may configure it only once per process.
  • The API has been called after [MSAppCenter start:...] or [MSAppCenter configure:...].

You can check warnings and errors in the console using the AppCenter log tag to troubleshoot configuration issues.