{"_id":"57d12aa38cad9c1700a98f5e","version":{"_id":"57b96d6b1d08500e00bf81d1","__v":7,"project":"54861bb654b3ce0b00367292","createdAt":"2016-08-21T08:59:23.326Z","releaseDate":"2016-08-21T08:59:23.326Z","categories":["57b96d6b1d08500e00bf81d2","57b96d6b1d08500e00bf81d3","57b96d6b1d08500e00bf81d4","57b96d6b1d08500e00bf81d5","57b96d6b1d08500e00bf81d6","57b96d6b1d08500e00bf81d7","57b96d6b1d08500e00bf81d8","57b96d6b1d08500e00bf81d9","57b96d6b1d08500e00bf81da","57b96d6b1d08500e00bf81db","57b96d6b1d08500e00bf81dc","57b97748306b9b0e001dd53f","57d12c6c1227b40e0044908a","57d51ad68191880e008bb51b","57d52b5cf350090e00fe073e","57d5468a17b492170053a3f0","57df9df05927cb0e002bce1e"],"is_deprecated":true,"is_hidden":false,"is_beta":false,"is_stable":false,"codename":"","version_clean":"4.0.0","version":"4.0"},"category":{"_id":"57b96d6b1d08500e00bf81d3","project":"54861bb654b3ce0b00367292","version":"57b96d6b1d08500e00bf81d1","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2014-12-08T21:55:25.679Z","from_sync":false,"order":1,"slug":"1-setup","title":"iOS / App Triggers"},"parentDoc":null,"__v":1,"project":"54861bb654b3ce0b00367292","user":"54861b9f3681d914006992a4","updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-09-08T09:08:51.319Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Add more locations along your app\"\n}\n[/block]\nNext step, let's add more places in your app where you can launch experiences.\n* When a screen loads\n* When you click on a button\n* etc...\nRead more about appTriggers here.\n\nEach app trigger needs to get a \"Define\" ( and you have a completion block as well, to run code once the sync per app trigger is completed) \n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Add the app trigger in the dashboard first\",\n  \"body\": \"Than add the following code in your client app\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"//Once `isActive` is YES, the trigger will show experiences\\n[params.data defineAppTrigger::::at:::\\\"triggerName\\\" isActiveCallback:^(BOOL isActive) {\\n        if(isActive){\\n            NSLog(@\\\"Now you can use 'triggerName' App trigger\\\");\\n        }\\n    }];\",\n      \"language\": \"objectivec\"\n    },\n    {\n      \"code\": \"//Once `isActive` is true, the trigger will show experiences\\nparams.data .defineAppTrigger(\\\"triggerName\\\") { (isActive) in}\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\nThis code should be inserted before initiating a session, here:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions\\n  (NSDictionary *)launchOptions {\\n  \\n  \\t\\t\\t// basic setup \\n        [ElastiCode setAPIKey:@\\\"<APIKey>\\\"];\\n  \\n  \\t\\t\\t// app triggers basic setup\\n \\t\\t\\t  ECSessionParams* params = [ECSessionParams createInProduction:NO];\\n  \\n        //// Defining an app trigger \\n        [params.data defineAppTrigger:@\\\"triggerName\\\" \\n        \\t\\t\\tisActiveCallback:^(BOOL isActive) {\\n\\t\\t\\t\\t        if(isActive){\\n        \\t\\t\\t    NSLog(@\\\"Now you can use 'triggerName' App trigger\\\");\\n  \\t      }\\n\\t  \\t  }];\\n        \\n\\t\\t\\t  [ElastiCode setSessionParams:params];\\n\\t\\t\\t  [ElastiCode ready];\\n        return YES;\",\n      \"language\": \"objectivec\"\n    },\n    {\n      \"code\": \"class AppDelegate: UIResponder, UIApplicationDelegate {\\nvar window: UIWindow?\\n\\nfunc application(application: UIApplication, didFinishLaunchingWithOptions\\n       launchOptions: [NSObject: AnyObject]?) -> Bool {\\n    // Override point for customization after application launch.\\n    \\n    // basic setup\\n    ElastiCode.setAPIKey(\\\"<APIKey>\\\")\\n    ElastiCode.setOnBoardingCompletionBlock { (didAppear) in      \\n    }\\n    \\n    // app triggers basic setup\\n\\t  let params:ECSessionParams = ECSessionParams .createInProduction(false)\\n  \\n    /// Defining an app trigger\\n    params.data .defineAppTrigger(\\\"triggerName\\\") { (isActive) in}  \\n    \\n\\t  ElastiCode.setSessionParams(params)\\n    ElastiCode.ready()\\n    return true\\n}\",\n      \"language\": \"swift\"\n    }\n  ]\n}\n[/block]\n[Launching app triggers](doc:moments) \n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"This is only a definition, it will not launch an experience  for this app trigger ( yet )\",\n  \"body\": \"To **launch** triggers, read here : [Launching app triggers](doc:moments)\"\n}\n[/block]","excerpt":"IOS / APP TRIGGERS: Additional triggers setup","slug":"app-trigger-setup","type":"basic","title":"Additional triggers setup"}

Additional triggers setup

IOS / APP TRIGGERS: Additional triggers setup

[block:api-header] { "type": "basic", "title": "Add more locations along your app" } [/block] Next step, let's add more places in your app where you can launch experiences. * When a screen loads * When you click on a button * etc... Read more about appTriggers here. Each app trigger needs to get a "Define" ( and you have a completion block as well, to run code once the sync per app trigger is completed) [block:callout] { "type": "info", "title": "Add the app trigger in the dashboard first", "body": "Than add the following code in your client app" } [/block] [block:code] { "codes": [ { "code": "//Once `isActive` is YES, the trigger will show experiences\n[params.data defineAppTrigger:@\"triggerName\" isActiveCallback:^(BOOL isActive) {\n if(isActive){\n NSLog(@\"Now you can use 'triggerName' App trigger\");\n }\n }];", "language": "objectivec" }, { "code": "//Once `isActive` is true, the trigger will show experiences\nparams.data .defineAppTrigger(\"triggerName\") { (isActive) in}", "language": "swift" } ] } [/block] This code should be inserted before initiating a session, here: [block:code] { "codes": [ { "code": "- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions\n (NSDictionary *)launchOptions {\n \n \t\t\t// basic setup \n [ElastiCode setAPIKey:@\"<APIKey>\"];\n \n \t\t\t// app triggers basic setup\n \t\t\t ECSessionParams* params = [ECSessionParams createInProduction:NO];\n \n //// Defining an app trigger \n [params.data defineAppTrigger:@\"triggerName\" \n \t\t\tisActiveCallback:^(BOOL isActive) {\n\t\t\t\t if(isActive){\n \t\t\t NSLog(@\"Now you can use 'triggerName' App trigger\");\n \t }\n\t \t }];\n \n\t\t\t [ElastiCode setSessionParams:params];\n\t\t\t [ElastiCode ready];\n return YES;", "language": "objectivec" }, { "code": "class AppDelegate: UIResponder, UIApplicationDelegate {\nvar window: UIWindow?\n\nfunc application(application: UIApplication, didFinishLaunchingWithOptions\n launchOptions: [NSObject: AnyObject]?) -> Bool {\n // Override point for customization after application launch.\n \n // basic setup\n ElastiCode.setAPIKey(\"<APIKey>\")\n ElastiCode.setOnBoardingCompletionBlock { (didAppear) in \n }\n \n // app triggers basic setup\n\t let params:ECSessionParams = ECSessionParams .createInProduction(false)\n \n /// Defining an app trigger\n params.data .defineAppTrigger(\"triggerName\") { (isActive) in} \n \n\t ElastiCode.setSessionParams(params)\n ElastiCode.ready()\n return true\n}", "language": "swift" } ] } [/block] [Launching app triggers](doc:moments) [block:callout] { "type": "danger", "title": "This is only a definition, it will not launch an experience for this app trigger ( yet )", "body": "To **launch** triggers, read here : [Launching app triggers](doc:moments)" } [/block]