{"__v":8,"_id":"55a8feb327a17d2100525201","category":{"__v":12,"_id":"55a8e7a227a17d21005251a2","pages":["55a8feb327a17d2100525201","55a9021527a17d2100525208","55a9035927a17d210052520b","55a903cfcf45e1390093f29e","55a9049727a17d210052520f","55a9059a27a17d2100525217","55a9066527a17d210052521e","55a9075bcf45e1390093f2a9","55a9090927a17d2100525228","55a90b30c8bd450d000dd164","55a90c56cf45e1390093f2bf","55a9102bc8bd450d000dd170"],"project":"559a61d2dbcfd20d00710b39","version":"559a61d2dbcfd20d00710b3c","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-07-17T11:31:46.263Z","from_sync":false,"order":2,"slug":"ios-sdk-reference","title":"iOS SDK Reference"},"parentDoc":null,"project":"559a61d2dbcfd20d00710b39","user":"559a618bdbcfd20d00710b38","version":{"__v":23,"_id":"559a61d2dbcfd20d00710b3c","project":"559a61d2dbcfd20d00710b39","createdAt":"2015-07-06T11:09:06.510Z","releaseDate":"2015-07-06T11:09:06.510Z","categories":["559a61d3dbcfd20d00710b3d","55a589ddaaf9cf1900114dd0","55a589e30f354f0d00fd0312","55a589ea80c8a30d00b323cc","55a589f6aaf9cf1900114dd1","55a58d4e80c8a30d00b323e6","55a8e7a227a17d21005251a2","55a93098cf45e1390093f351","55afb085f202b12100cd9e83","55afb22e902fd51700f5f8bf","55afb260902fd51700f5f8c2","55afb28ec8a85321007a5462","55afb294f202b12100cd9e95","55afb29b902fd51700f5f8c5","55afb2a1c8a85321007a5463","55afb2a7902fd51700f5f8c7","55afb2ad902fd51700f5f8c8","55afb2b5902fd51700f5f8ca","55b74b2131bccb190081bedc","55bb441b54f9640d006e6cf2","565711085cb2420d00d70071","5681681330018c0d006bf7ff","588f38b5923d610f00c72dad"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-17T13:10:11.115Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"- The app `Instance object` is a local representation of an app instance downloaded and installed in a user device. \n- The instance object is **automatically managed** by MOCA. \n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"MOCAInstance * theInstance = [MOCA currentInstance];\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\n- The instance object holds a **collection of properties**. Property-value pairs can be set and retrieved and are persisted between app sessions.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"/**\\n * Sets the value for the given property name.\\n * \\n * :::at:::param value Value to be set. It must belong to one of the accepted classes.\\n * @param prop Property name.\\n */\\n- (void) setValue:(id)value forProperty:(NSString*)prop;\\n\\n/**\\n * Gets the value for the given property.\\n *\\n * @param prop Property name.\\n * @return Value associated with the property or <code>nil</code> if none.\\n */\\n- (id) valueForProperty:(NSString*)prop;\\n\\n/**\\n * Returns a new array containing all existing property names.\\n *\\n * @return A new array containing all existing property names.\\n */\\n- (NSArray*) allProperties;\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"info\",\n  \"body\": \"MOCA properties are internally stored in a local SQLite database\"\n}\n[/block]\nThe instance object holds predefined properties collected automatically:\n- `Device-oriented`, including:\n - `device_model` – the device model (i.e. iPhone 4S, iPhone 5C, iPhone 5S)\n - `device_type` – the type of device (i.e. iPhone, iPad, Simulator)\n - `local_timezone` – the local time zone's abbreviated name (i.e. EDT, GMT, PST)\n - `country` – the country code as defined by the user in `Settings\\General\\International\\Regional Format (NSLocaleCountryCode)`.\n - `lang` – the user preferred language code as defined in `Settings\\General\\International\\Language (NSLocaleLanguageCode)`.\n - `os_name` – the OS name (i.e. “iOS”)\n - `os_version` – the OS version (i.e. “7.0”)\n - `carrier_name` – the name of the user’s home cellular service provider (CTCarrier carrierName)\n - `carrier_country` – the ISO country code for the user’s cellular service provider.\n- App-oriented, including:\n - `app_name` – the app name\n - `app_version` – the app version number\n - `vendor_id` – the unique identifier for app vendor (i.e. UUID string)\n - `moca_version` – the version of MOCA SDK\n - `apns_token` – the push notification device token (optional)\n - `session` – session counter (how many times a user launched the app).\n\n- The object may also store any custom property-value pairs. \n- Each instance object is persisted both locally and in the cloud. The instance is automatically uploaded to the cloud each time the app starts.\n- The instance can be saved manually to the cloud. All saves are asynchronous.\n- It is recommended to perform as many sets as desired and then just invoke a single save operation.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"#import <AdSupport/ASIdentifierManager.h>\\u000b\\n\\nMOCAInstance * theInstance = [MOCA currentInstance];    \\nif (theInstance)\\n{\\n    // Only track Advertising Identifier, if you app uses explicit Ad banners. \\n    NSString * adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; \\n    [theInstance setValue:adId forProperty:@”_ad_id\\\"];\\n    [theInstance setValue:@\\\"red\\\" forProperty:@\\\"favorite-color\\\"];\\n    [theInstance setValue:@\\\"women-cloth\\\" forKey:@\\\"last-search\\\"];\\u000b    // Asynchronously save the instance to the cloud.\\n    [theInstance saveWithBlock:^(MOCAInstance *instance, NSError *error)\\n        {\\n          if (error) NSLog(@\\\"Save instance failed: %@\\\", error);\\n        }\\n    ];\\n}\\n\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"instance-api","type":"basic","title":"Instance API"}
- The app `Instance object` is a local representation of an app instance downloaded and installed in a user device. - The instance object is **automatically managed** by MOCA. [block:code] { "codes": [ { "code": "MOCAInstance * theInstance = [MOCA currentInstance];", "language": "objectivec" } ] } [/block] - The instance object holds a **collection of properties**. Property-value pairs can be set and retrieved and are persisted between app sessions. [block:code] { "codes": [ { "code": "/**\n * Sets the value for the given property name.\n * \n * @param value Value to be set. It must belong to one of the accepted classes.\n * @param prop Property name.\n */\n- (void) setValue:(id)value forProperty:(NSString*)prop;\n\n/**\n * Gets the value for the given property.\n *\n * @param prop Property name.\n * @return Value associated with the property or <code>nil</code> if none.\n */\n- (id) valueForProperty:(NSString*)prop;\n\n/**\n * Returns a new array containing all existing property names.\n *\n * @return A new array containing all existing property names.\n */\n- (NSArray*) allProperties;", "language": "java" } ] } [/block] [block:callout] { "type": "info", "title": "info", "body": "MOCA properties are internally stored in a local SQLite database" } [/block] The instance object holds predefined properties collected automatically: - `Device-oriented`, including: - `device_model` – the device model (i.e. iPhone 4S, iPhone 5C, iPhone 5S) - `device_type` – the type of device (i.e. iPhone, iPad, Simulator) - `local_timezone` – the local time zone's abbreviated name (i.e. EDT, GMT, PST) - `country` – the country code as defined by the user in `Settings\General\International\Regional Format (NSLocaleCountryCode)`. - `lang` – the user preferred language code as defined in `Settings\General\International\Language (NSLocaleLanguageCode)`. - `os_name` – the OS name (i.e. “iOS”) - `os_version` – the OS version (i.e. “7.0”) - `carrier_name` – the name of the user’s home cellular service provider (CTCarrier carrierName) - `carrier_country` – the ISO country code for the user’s cellular service provider. - App-oriented, including: - `app_name` – the app name - `app_version` – the app version number - `vendor_id` – the unique identifier for app vendor (i.e. UUID string) - `moca_version` – the version of MOCA SDK - `apns_token` – the push notification device token (optional) - `session` – session counter (how many times a user launched the app). - The object may also store any custom property-value pairs. - Each instance object is persisted both locally and in the cloud. The instance is automatically uploaded to the cloud each time the app starts. - The instance can be saved manually to the cloud. All saves are asynchronous. - It is recommended to perform as many sets as desired and then just invoke a single save operation. [block:code] { "codes": [ { "code": "#import <AdSupport/ASIdentifierManager.h>\u000b\n\nMOCAInstance * theInstance = [MOCA currentInstance]; \nif (theInstance)\n{\n // Only track Advertising Identifier, if you app uses explicit Ad banners. \n NSString * adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; \n [theInstance setValue:adId forProperty:@”_ad_id\"];\n [theInstance setValue:@\"red\" forProperty:@\"favorite-color\"];\n [theInstance setValue:@\"women-cloth\" forKey:@\"last-search\"];\u000b // Asynchronously save the instance to the cloud.\n [theInstance saveWithBlock:^(MOCAInstance *instance, NSError *error)\n {\n if (error) NSLog(@\"Save instance failed: %@\", error);\n }\n ];\n}\n", "language": "objectivec" } ] } [/block]