00:01So I'm going to be talking about the runtime SDKs for iOS and Android.
00:06My name is David Cardella.
00:08I work in Redlands, at Esri in Redlands, and I'm our mobile product manager.
00:15So hopefully by the end of this hour, what we're going to have a good understanding of is...
00:22...what are these runtime SDKs, and why is that word runtime in there?
00:27Because I know that some people are asking, Oh, are these new SDKs?
00:32No, they're not new SDKs, these are the same iOS and Android SDKs we've always had...
00:39...but they are taking on runtime-like capabilities in terms of the runtime capabilities...
00:46...that you may have heard of in the new WPF and Java SDKs.
00:52So we'll get into that.
00:54Who are these SDKs for? We'll talk about that as well.
00:57What can you build with the APIs?
01:01We'll talk about deployment options for these applications...
01:05...and I'll tell you what we do in development at Esri...
01:09...for both deploying apps to the App Store but also deploying apps within our enterprise as well.
01:17And then we'll talk about how we get started.
01:23Who would consider themselves an Android or an iOS developer?
01:30Hands? A couple.
01:32It's actually good news.
01:35Because what this session is not about is diving deep into code.
01:40As a matter of fact, I'm not going to show you one line of code throughout the whole session.
01:44So for those of you who didn't raise your hand, which is actually most of you, don't run away.
01:50You're not going to get lost in this session; it's actually going to be a good overview of what you can do.
01:55And if you work closely with other developers in your company...
01:58...you're going to be able to take this information back to them.
02:02So it's going to be a very understandable session whether you're a developer or a nondeveloper.
02:09Okay, so when we talk about ArcGIS, we talk about it as a complete system.
02:13And so you may have your data locally within your organization...
02:18...and you access that data using some of the desktop tools like ArcMap, ArcCatalog, et cetera.
02:26Your data could be spread throughout the enterprise.
02:29These could be services that are published within your intranet.
02:33Or, you could have data that's exposed outside of your DMZ to the cloud.
02:39Regardless of how you have your data, you are able to do things with this data...
02:43...create, discover it, analyze it, use it, edit with it.
02:49And you're able to do this through various windows into the system.
02:52One of those windows is the desktop and the desktop applications that go along with that.
02:58The other window is the web and the viewers that we provide...
03:02...or perhaps a custom application built with the web APIs.
03:06And the third way is through mobile, mobile devices.
03:10Typically we think of mobile devices as these handheld devices...
03:13...whether it's a ruggedized handheld device or a smartphone.
03:17But mobile devices can also include laptops that are embedded within a vehicle...
03:22...or that you carry out to the field.
03:26So we can categorize these solutions or these platforms really into two different categories.
03:35We've got our ruggedized handheld or ruggedized device category, which includes both the handheld...
03:40...we see here we've got a picture of a Trimble Juno--or a ruggedized laptop.
03:46And then we've got, on the other side, our smartphone and tablet solutions and SDKs...
03:52...which include SDKs for iOS, Windows Phone, and Android.
04:00So when we talk about runtime, when we talk about these different platforms...
04:06...these different platforms each have an SDK.
04:10This SDK is available to you guys, it's more than just an API.
04:15Its samples, it's IDE integration.
04:19So it is really a full SDK rather than just downloading the API.
04:24And so there are runtime SDKs that span many different platforms.
04:29Some of them are very familiar to us in terms of the mobile world...
04:32...and some of them we may not think are mobile; however, they can be...
04:36...like the Java, like the WPF, for example.
04:41So when we talk about runtime SDKs, we're talking about SDKs that share a common framework...
04:47...a common functionality among them.
04:52So today we're going to be talking about the iOS and the Android SDK.
04:55Now, I believe the description tells that for the first half of this session I'm going to talk about iOS...
05:05...and then the second half of this section I'm going to talk about Android.
05:08I'm going to talk about both of them at the same time as we go along...
05:12...and where there are differences, I'll be very specific to point that out.
05:18Okay, so these SDKs are, of course, powerful.
05:22You've got the ability to perform some advanced analysis.
05:26They are native APIs.
05:28That means in iOS you are programming with Objective-C...
05:32...and on Android you're programming with Java.
05:39They have similar object models.
05:41What does that mean?
05:42Well, a map control or a map object in Objective-C is the same as a map object in Java.
05:53Layers that you add to that map object is the same as it is in Java and Objective-C.
06:00So a map is a map is a map, a layer is a layer is a layer.
06:04So from a higher level, they have very similar object models.
06:08Now, you dive down deep into the code, you've got delegates on Objective-C...
06:14...you've got other notification mechanisms that are different based on the platform that you're working with.
06:20But from a high level, the object models are the same.
06:23So for those of you...how many out there anticipate having to build...
06:27...whether it's you or someone else in your office, having to build a native application for multiple platforms?
06:35Okay. So if you have to do that for multiple platforms...
06:40...having similar object models at that high level is actually very advantageous.
06:46So typically, especially in smaller companies, you have one or two developers...
06:50...that do the development for both iOS as well as Android.
06:53And having that knowledge of having the similar object models at a higher level is actually very beneficial.
07:01Communication is REST-based.
07:03What does that mean?
07:04Well, you've got your content that's served out through ArcGIS Server or published.
07:08That could be on-premise, it could be in the cloud; it could be within your DMZ or outside your DMZ.
07:15And the SDKs or the APIs communicate with your data over a REST endpoint.
07:22So while you may be writing Objective-C code or Java code, you're actually communicating via REST.
07:31And so some of the advantages of these SDKs...
07:33...is that it's very easy for you to access your own authoritative data.
07:40So we've got basemaps up on ArcGIS.com that are good basemaps.
07:47However, I know many of you in this room have your own basemap data...
07:50...your own operational data, that's more authoritative that what we have online.
07:56You work with your area of interest, you work with your data on a daily basis...
08:01...and so your data is more authoritative.
08:03You want to use you data. The SDKs give you access to your own data.
08:07It also allows you to perform advanced analysis.
08:10This could be some advanced geoprocessing calculations, which I'll show you some examples of.
08:17It could be measurement, something a little bit more simpler.
08:20The SDKs allow you or your users that you build these applications for to collect or edit data.
08:27Now, they may not know they're doing that.
08:29For example, you may be building an application that is a 311 application for citizens...
08:34...or communities to download and report on graffiti or potholes within your community.
08:41Now, when someone uses that application and they report a problem, they're actually creating data, right?
08:48They're sending you back data that gets created.
08:50They don't think of it that way, but that's what they're doing and that's what the SDK allows you to do.
08:55Now, the SDK allows you to either build your own mobile workflow...
09:00...your own focused, customized application.
09:03Or, if you already have a mobile application that needs mapping...
09:08...that needs some type of GIS analysis...
09:10...you can use the SDKs to build that functionality within an existing application.
09:17So that's one of the advantages of these native SDKs.
09:21Now, what is not possible is, a lot of folks ask us...
09:27...Well, I see you've got an ArcGIS app that's available from the store.
09:30I've downloaded it, I've used it. Some of the stuff is interesting.
09:33I'd like to use that, but I'd like to extend that application and add functionality x-y-z.
09:41Right now, the Objective-C and the Android platform do not allow for building add-ins...
09:47...or plug-ins to existing applications.
09:51Existing applications...that you don't have the source code for.
09:54Now of course, as I just mentioned, if you have an existing application that you've built...
09:59...of course, you can use these native SDKs and build in mapping.
10:02But if you've downloaded an application from the store that you have not developed yourself...
10:06...there is no mechanism by which you can build add-ins.
10:15So who is it for? Well, the SDKs are for developers.
10:18And they're for developers within the GIS world.
10:22So we've got a lot of developers who were trained in GIS first...
10:28...and acquired development skills over a number of years.
10:33We've also got GIS developers who were developers by trade...
10:38...got involved within a company who had a GIS department...
10:41...and built up their GIS knowledge that way.
10:45We've also got several hundred partners that are using the SDKs and have access to the SDKs...
10:51...to build custom solutions and custom workflows for their customers.
10:57And the SDKs are for the developer community as a whole...startups.
11:04Anyone developing applications that need a mapping component.
11:10Could be a student who builds applications as a hobby.
11:13It could be a startup company staring up in their garage, for example.
11:20So these SDKs are for them, too. It's not just for the GIS community.
11:28Okay, so what I thought I'd do was talk about what the SDKs can do for a little bit...
11:35...and then we can take a look at some examples of custom applications.
11:40Some of them in the App Store now, some of them built by our development team to be used as samples.
11:49So we support many different types of map layers.
11:52We support basemaps, otherwise known as tiled layers.
11:57We support basemaps served out through ArcGIS Server.
12:01It could be Bing, OpenStreetMap.
12:04Word of note, remember how I told you how I would explain any differences between iOS and Android?
12:10With the currently released Android SDK, we don't support OSM right now...OpenStreetMap.
12:16We will in the next version, but not now.
12:20We also support dynamic layers or your authoritative layers, your business layers.
12:25For a public works department it could be utilities, it could be water mains, et cetera.
12:31And we support a graphics layer.
12:34Graphics layers like a pop-up that comes up...
12:39...or allowing the user to draw on the map...either editing or measuring.
12:45And we support feature layers.
12:47Feature layers are new at 10.0, so they've been around for a year or two...year and a half.
12:56And these editable feature layers are basically services that can be edited through a REST endpoint.
13:03We support those.
13:06[Inaudible audience question or response]
13:08No. And so, the question was, Do you support Tracking Server? No, we don't.
13:14Now, when I say we don't support Tracking Server...
13:18...it means we haven't built an API around the REST endpoint for the Tracking Server service.
13:24That is something we're looking at doing, but we've just had very informal conversations about it.
13:31So it's not on our 2012 road map right now.
13:34However, there's nothing stopping you or your developer from sending and receiving raw REST requests.
13:43Now, of course, it's outside of our native API, but because the Tracking Server service is REST-based, you can still do that.
13:51Little bit more work. It's more handy if we've wrapped it for you, understood, so...
13:59Yeah, if there's any questions, just let's keep this an open discussion.
14:02Just, you know, yell. And we also support web maps. What are these web maps?
14:10Web maps were talked about a lot at the Plenary Session, okay?
14:13Web maps are a way in which we can author data and mashup data together...
14:19...like basemaps, like operational layers. But also author in intelligence, like editing.
14:26What's the user going to see when you click on a pop-up?
14:29So you may be asking yourselves, Well, okay, you support web maps...
14:32...but I'm just going to develop an application that hits our services directly.
14:37Not hits a web map that then hits our services. So what's the advantage of using a web map?
14:42Well, one of the big advantages of using a web map is that you or someone who's not a developer in your company...
14:50...can change the user experience on your custom application simply by editing a web map.
14:57For example, let's say you have a custom application that goes out...
15:02...and opens a web map much like our ArcGIS app.
15:05In that web map you've authored in pop-up functionality...
15:08...that brings to the user attributes...three attributes, let's say.
15:15That user can use your application, tap on the map, and get those three attributes.
15:20But you want to show more to the user. You want to show graphs.
15:23You want to link out to websites.
15:25You want to show more dynamic content, perhaps link a movie there.
15:31What you can do is, you can edit that web map and author in more pop-up functionality...
15:38...that becomes exposed and alive within your application.
15:43So you didn't have to crack open the code again, you didn't have to deliver it via an enterprise account...
15:48...or resubmit it to app store or market; in the case of Apple, wait a week before they either reject or accept it.
15:55Okay, so that's one of the big advantages of working with web maps.
16:02So, a question that I get all the time is offline.
16:06I have to go offline, I have to build applications that allow my customers or my users of the application...
16:12...to work in a totally disconnected state, edit data, modify data, add new features...
16:18...and then when we're connected, sync back up with the server.
16:23So we are working on that. That is on the development road map for 2012.
16:29And we're getting there. What do I mean by that?
16:34The SDKs right now support offline storage and offline use of caches. That's the basemaps.
16:43So in the case of iOS, we support caches that you create using ArcMap Desktop.
16:50We also support tiled packages. Tiled packages are a new way of packaging up basemaps at 10.1.
16:59So at 10.1 you can create a tile package, and that tile package can be used in a custom iOS application...
17:05...it can be used in the new WPF runtime, and it can be used in the new WPF Java as well.
17:13So right now, iOS SDK supports these tile packages. On the Android side of things, we do support caches.
17:21Again, these are the same caches that you can create through ArcMap.
17:25Very soon, we are going to support tile packages as well.
17:29Now, you may be saying, Oh, that's great. You support offline basemaps.
17:33But I can't get my operational data offline, you're not telling me that I can edit and post back.
17:40And the answer is that no, not right now. It's coming though.
17:46We do have a sample, and I'll show it to you later today.
17:49We do have a sample on the iOS resource center that does take both basemaps and operational layers...
17:56...allow you to go offline, edit your operational layers...
18:01...and then sync that data back up with your enterprise GIS.
18:07Now, the thing about that sample is that it uses, it stores these features in memory, right?
18:12It doesn't persist them on the device itself.
18:16More details on that when we look at it.
18:20We also have this concept of graphics.
18:22So graphics can be arbitrary objects; they can be point/line/polygon/text...
18:27...they can be geometry and symbols, they can be attributes...
18:31...and we use this graphics layer extensively throughout the ArcGIS application.
18:38We use it when someone is measuring and they're sketching on the device.
18:43So that could be measuring, it could be editing...We use it for our callouts.
18:47The user taps on a feature, they want to see media, they want to see attributes...
18:53...we put that on a graphics layer.
19:00And of course, analysis. So some of the standard things...
19:04...query, of course geocoding, reverse geocoding. Both of the SDKs have a... Yes, sir?
19:13[Inaudible audience question or response]
19:17Support KML, and I'm going add in WMS on top of that.
19:21Right now the SDKs do not support that.
19:25It is coming, and it's coming soon. Look for it this summer.
19:32Both of the SDKs have a native or a local geometry engine.
19:36What does that mean?
19:37That means a lot of geometric analysis, a lot of measuring...
19:43...a lot of overlays (point and poly, edge-type processing)...
19:51...unions, buffers, et cetera, are done locally on the device using the device's...
19:58...using the hardware of the device itself.
20:01So you could go back to a geometry service and process this, or you can do it locally on the device.
20:06And since these devices are getting so powerful, even the phones are getting quad cores now...
20:11...that's actually a very nice feature for your custom applications.
20:15Of course we support geoprocessing tasks.
20:18These geoprocessing tasks can be as complicated or as simple as you like.
20:22These are the same tasks that you author in Desktop, serve out through Server.
20:27Routing...routing is highlighted because routing is supported in iOS natively through the SDK.
20:35In Android it's supported, but it's supported through a geoprocessing task.
20:41We are bringing that functionality in the next release or two.
20:44We are bringing that functionality directly to the SDK as well.
20:53[Inaudible audience question or response]
20:56When would that be?
20:59Yeah, in the summer time frame.
21:03Just a shameless plug, I am giving a road ahead session tomorrow morning at 8-30.
21:09Little early...maybe I'll see some of you.
21:10You might be wearing the same clothing as yesterday, I don't know, it is an early session.
21:15But if you're interested in our 2012 road map on mobile on all the platforms...
21:20...please come, and come to the 8-30 session.
21:23Of course the SDKs allow you to edit or collect data, as well.
21:28And all this is done against a feature service.
21:30Right now, the SDKs support a connected editing environment.
21:36We also support attachments...one to many.
21:39Many attachments to one feature.
21:41These attachments can be photos, they can be PDF documents...
21:46...they can be videos taken with the device, et cetera.
21:53Okay. So let's take a look at some of these.
21:59Let's go to the iPad. Let's not go to the iPad. Okay, let's go to the iPad.
22:18I've got here an application that was built using the iOS SDK.
22:26And basically it allows first responders to get some information on an accident, a spill of some kind.
22:34So I'm just going to zoom into an area that we're going to work with today.
22:39So I see here that I've got my road network, so I'm going to turn on Aerial CORRECT.
22:45And what I'm going to do is, I'm just going to interact with the map...
22:49So...oops. Let's undo that.
22:54I'm just going to interact with the map. You can't see what my fingers are doing, so I'm going to describe it.
23:00And I'm just going to interact and denote an area of a spill.
23:04At any point I can just tap and hold and get some more fine-grained control.
23:09Some of the other inputs are, I can choose the type of spill; in this case, chlorine.
23:15I've got wind speed here that I can adjust.
23:18And of course, my compass here shows me the direction in which this wind speed is going.
23:24So what I'm going to do is, I'm going to analyze the spill.
23:28So what's happening? Well, this application is going out, and it's calling a GP service.
23:34And it's passing in those inputs that I sent it.
23:37And this GP service is determining, based on the type of material...
23:43...the wind, all the inputs that I put in, an evacuation area.
23:48And then it's taking the result of that evacuation area...
23:52...and it's using that in a selection against some demographic data.
23:56So I see here that I've got some demographic data that's important to me in the rescue operation.
24:01Very young and very old may need some extra help evacuating that area.
24:06So that was all done using a geoprocessing task.
24:12Now, the second part of this problem is that I'd like to figure out where I can evacuate these folks to.
24:20So I have some schools here.
24:23Schools are often used in these types of evacuations...
24:26...and so in order for me to pick some good candidates for this, I can simply tap on it.
24:34We see here in this custom callout that I actually have another map control that I can interact with.
24:40Pinch zoom, double tap...it's the same map control as the big one in this application that I've been using.
24:47So I see here that we've got a nice, big field in which we can do some preliminary processing...
24:52...on these evacuees before we get them in here.
24:54I can also run a service area geoprocessing to determine if, based on a particular drive time...
25:03...if this evacuation location is serviceable at all to my affected area. And I see that it is.
25:13So we'll go ahead and we'll select this as a potential evacuation location.
25:18We'll choose this one too, and we'll choose this one.
25:23Hopefully not too far downwind from the accident.
25:28Now what we'll do is, we will determine of the people that live in this area...
25:34...where they should be allocated.
25:36And so this is going out and it's calling another geoprocessing service...
25:40...and that geoprocessing service just happens to be called location allocation.
25:45So it's going out, it's calling that...Now there's some computation going on here...
25:49...so it's going to take a few seconds.
25:51But these GP services are the same GP services that you author in Desktop...
25:56...that you serve out through Server, and that you can now consume within these SDKs.
26:03So when the response comes back, we should see paths in three different colors...
26:12...denoting where these folks should be allocated in terms of their evacuation location.
26:20So we see here we're getting back the GP results, and we've got our result.
26:27Okay, so that was an example, custom application uses at least three or four GP services that I just showed you.
26:39Great, what else do we have?
26:42Let's go to...let me show you a couple applications that are actually in the app store.
26:50Now, because I don't have an ELMO, which I thought would be here...
26:55...I'm using this very crude USB camera.
26:59James, can you see that back there?
27:02I see there's a picture up there. What am I looking at?
27:05Oh, how many e-mails do I have?
27:06[Inaudible audience question or response]
27:07There you go! All from you, I'm sure.
27:10Anyways, so this camera is not as good as the ELMOs, but bear with me.
27:16So I've got a few examples of applications. Here's one called Where To SG?
27:21This is an application built by the...initially the Singapore government in conjunction with Esri Singapore.
27:31And who it's targeting is both tourists as well as citizens of Singapore...
27:36...where they can determine what is around them.
27:40Now, since we're not in Singapore, obviously I'm not going to use the current location.
27:45But what I am going to do is, I'm just going to zoom in here a little bit.
27:51I'm doing everything on 3G because I've noticed that the wireless is a little bit sketchy.
27:57So that's fine, and we will go ahead and select an area.
28:04So obviously I would use the GP of the device.
28:08But we can determine different...we can determine what's close here.
28:12So that might be a little small at the back, but we've got gas stations, supermarkets...
28:18...we've even got 24-hour clinics and dialysis, which, I don't know...
28:25...I guess there's a lot of kidney problems there.
28:27They have dialysis centers. We'll go ahead and we'll choose the gas stations.
28:31So what this is doing now, it's just finding all the gas stations close to me, it lists them here...
28:36...I can plot them all on the map, I can go to them individually, I can get directions to it.
28:42So that's an application, Where To SG?
28:46It's in the app store.
28:47And at last count, they had mentioned that they had about 150-160 downloads...
28:50...so that's a fairly popular one.
28:54Crime Map, this was put out by the Omega Group.
29:00Crime Map, they partner up with a lot of the police authorities...
29:05...a lot of authorities throughout the states.
29:08This happens to be a Redlands crime map.
29:12I don't know how many of you have been to Redlands. Redlands is not a big place.
29:17Yeah, some of you have been there. There's probably 60,000-70,000 people there.
29:22This looks like a lot of crime, which actually surprised me. So we've got various different types of crime.
29:29Looks like this mask here is probably burglary, which it is, I can go in and I can get some information on it.
29:38Spray can, looks like graffiti, vandalism. Not a lot of information...Oh, yeah.
29:43There you go. Some information there.
29:45So again, crime mapping in the app store. Good use of the SDK.
29:52Let me go over to my Android device here.
30:04Here's an application that the city of Honolulu put together...
30:08...that identifies areas of evacuation zones once a tsunami hits.
30:14So ideally, of course, you would use your current location.
30:21But you can also enter in an address.
30:32I'm sure you guys are all loving me fat-finger this thing.
30:39Do some geocoding...This particular location happens to be in an area of evacuation.
30:45So this data changes, obviously, based on events, based on the time of year, and it's not just tsunamis.
30:51It's really any type of natural disaster.
30:55So that's in the Google market right now.
31:02We've got our friends from CitySourced.
31:08They have built native applications on iOS, Android, and Windows Phone that allow you to submit...
31:19...it's a 311 application, so it allows you to submit various reports or various problems...
31:25...that are going on in your community...vandalism, potholes, streetlights.
31:30So I can either choose, in this case, a photo; I can attach a video.
31:35I'll just choose one from my camera roll.
31:38I can either use my current location, enter address, or just simply tap on the map...
31:44...select a location, and then I have to put in a whole bunch of information, a description...
31:50If I want to get contacted when this particular issue is resolved, there is also a way for that to happen as well.
32:00There is one interesting application I want to show you that does demonstrate offline capabilities.
32:08So, back to the iPad. Okay. I guess I'm not on the iPad.
32:31You should have brought your Apple TV and then you could have...
32:35So true, have you tried that?
32:36[Inaudible audience question or response]
32:37Yeah, it's great.
32:40Yeah, for those of you who don't know, if you download iOS 5 and you've got Apple TV...
32:48...you can stream whatever you're doing on your iPhone or your iPad right to the TV.
32:52Which could be a good or bad thing, I don't know.
32:57Come on...Alright, we're going to use the USB camera.
33:26Okay. That's actually dark. This will work. It worked before. Okay, good.
33:45I've got an application, it's an inspection application.
33:48And we've got some hi-res data here of an oil field.
33:52And a field worker can go out to the field and inspect their oil tanks.
33:59Well, out in the field there's going to be little or no connectivity.
34:02So before that person goes out into the field...
34:06...they've got some sticky notes here to remind them of what they're supposed to do.
34:10So before digital or mobile GIS, and actually, what's happening right now is that...
34:15...we've got energy companies, energy field workers...
34:18...literally taking a clipboard out to the field to do their asset management.
34:24So we built this application, it's a digital clipboard, to try and make them feel a little bit more at home.
34:29So I'm going to go ahead and download my data. Now that happened pretty fast.
34:33So you're probably saying, Okay, I call a little funny business on this one, right?
34:41I will tell you that that hi-res basemap imagery data is already local on the device.
34:47So what did we download?
34:48Well, we downloaded the tank data which is denoted by our green symbology.
34:56We also downloaded an inspection layer which is denoted by the yellow stickies. Alright?
35:02So, when we go out to the field, let's go ahead and go into Airplane mode.
35:10We've got no Wi-Fi, we've got no 3G access. The application even tells us that we're offline.
35:16We still have full control of all of our data.
35:19It's all local on the device, and when we get out to the field, if I just tap on this tank here...
35:28...I can get some information about the tank.
35:30But more importantly, I can bring up a form...
35:33...a digital form that I can use to assess this asset.
35:36And so I'll specify a tank that is in good shape, that looks okay.
35:43We can even attach a photo. Of course, I'd probably take a photo out there.
35:47We'll choose an existing one that represents the asset in which we are taking, and we'll just pin it to our form.
35:56And I'm going to hit the check box in the lower right-hand corner.
36:01So what have we just done? Well, we've inspected this asset.
36:04The inspection is still local to the device, right?
36:09It still hasn't been posted back to the enterprise GIS.
36:12So what we can do is, once we do have connectivity...
36:25...I'm back to the application, we see in the upper left-hand corner it says we've got one inspection to sync.
36:32I can curl up the map and I can hit the Synchronize My Inspection sticky there, and we're good to go.
36:39So what happened there?
36:41Well, essentially, we created a service and...There's a few services going on here.
36:47There's a service that represents the hi-res imagery...
36:51...there's a services that represents the tanks, and there's an editable service that represents our inspections.
36:57And so we downloaded all of that to the device.
37:00I showed you just the two operational layers. But all of the data was on the device.
37:05We edited the inspection layer offline, saved it on the device, and then synced it back up.
37:13That's a sample that's there for you right now. This sample uses or stores those features in memory.
37:21So there's pitfalls with that.
37:23If you've got a lot of operational data, you're doing a lot of editing, you could run out of memory...
37:27...fairly quickly depending on how much data you're actually synchronizing or bringing down.
37:33So a more long-term solution is in our 2012 road map. It's to persist these features on the device.
37:41Persist them on the device. It scales a lot better.
37:45We're going to be building a synchronization mechanism both through the SDK...
37:49...as well as through the out-of-the-box applications as well.
37:57Any questions so far? Yes, sir?
38:03[Inaudible audience question or response]
38:21Yeah, so the first is security. Let's say the device is lost. The SDK supports secure services.
38:28And so token-based, https, as well as token-based...it's all supported.
38:35But you should also secure your...at least, put some deterrent security on your devices, anyways.
38:42Passcode-lock, if your device is issued by your organization, a lot of IT departments...
38:49...the remote administration of these devices is becoming a lot easier now.
38:54You can wipe devices remotely. I think you were getting at the service level, which is supported.
39:00And your second question, sorry. What was that?
39:03The battery life?
39:04Yeah, so battery life is an issue on these devices, right?
39:08How many have an iPad 1 and 2? How many...yeah.
39:11So you've noticed a huge difference I'm sure between battery life on 1 and 2.
39:15One lasts probably double, depending on what you're doing with it, double the time.
39:20Battery life is an issue, and I'll tell you what eats battery up a lot...
39:24...is constant network connection, and pinging, and chatty applications.
39:29Being able to go offline will save your battery. There are also these little battery packs.
39:34James has got one, we were just looking at it before...
39:37...where you charge them up beforehand and then you plug them in.
39:40I expect because these devices, both smartphones and tablets, are getting integrated into organizations...
39:46...at such a rapid rate, that the battery life on these things is going to get better.
39:52[Inaudible audience question or response]
39:55Yeah, great point. So another thing is that you can buy what they're calling a ruggedized case.
40:03It's not the same thing as a ruggedized handheld, but it's a ruggedized case...
40:07...that has both a battery...extra battery life in it.
40:10And James, I've even seen them with a higher-end GPS chip.
40:15Yeah. So you know, on the iPad you're getting what, five-meter level of air?
40:20Magellan made a case for the 3GS.
40:23I don't have their 4. For the 3GS, that was totally waterproof...
40:28...it floated, but it was also waterproof if it got submerged.
40:31It had the extra battery life as well as a GPS chip that had a much higher accuracy.
40:37[Inaudible audience question or response]
40:48Yes. Excellent point.
41:00So James just pointed out a Catch-22, right?
41:03So I just said chatty applications and when you have network connection on all the time, it uses more battery.
41:10So when you turn network connection off, you're eliminating some of the points...
41:14...in which the device uses to triangulate itself (i.e., Wi-Fi hot spots).
41:19So yeah, you may be getting longer battery life...
41:21...but you're certainly not getting the accuracy that you did before.
41:25That's a great point.
41:27Now the 4S, the iPhone 4S does use a lot of the Russian satellites...
41:33...the GLONASS satellites, which gives it more accuracy than before.
41:41But still, it still hasn't approached the accuracy of these ruggedized devices.
41:46These explorers, these Junos, these Leica devices, things like that.
41:54Yeah, that's a good point. I guess I should get you back over to the slides. Okay, deployment.
42:12How many folks have developed an application...
42:14...or at least had your developers develop an application, and you've gone through deployment hell?
42:19Whether it's to an app store or enterprise?
42:23So, really, when deciding what deployment mechanism is good for you...
42:28...you really have to ask yourself, Who is the target audience for your application?
42:33Is it for consumers? Is it going to be widely distributed?
42:37Or, is it for your enterprise or an app that you're building for your customer...
42:42...and it's going to remain within the enterprise?
42:44Well, if it's for external consumption, public consumption...
42:47...you've got to go through...at least on iOS, you have to go through the App Store.
42:53Now, there are certain pitfalls with that, of course.
42:56You've got an approval time that...we just posted a conference app, and it took five business days...
43:05...from the time we submitted it to the time I got notified that it was in review...
43:12...and then it took probably 12 hours after that to get approved.
43:16So, it got approved, that's great. But they can get rejected.
43:20And we've all heard these nightmare stories, especially early on.
43:24A year or so ago, a year and a half ago, where Apple just rejects these applications...
43:28...sometimes with very little or no explanation.
43:32So Apple has gotten a lot better at giving more detailed explanations should applications be rejected.
43:41On the other side, we've got the Google market.
43:45The Google market is a lot more open. And there's pros and cons to that.
43:51So, you can submit your application, you can get a $25.00 account from Google...
43:56...you submit your application, and it's almost instantaneous.
44:01Your application's probably ready for download in an hour or 30 minutes depending on network traffic.
44:06So there's no one who has to approve your application, it's instantaneous.
44:11The other advantage you have of getting your Android apps out to the public is...
44:16...you can create your own Android market.
44:19Call it Company A-B-C and promote it.
44:22You can put your application on other Android markets like Amazon, for example.
44:29A lot more open, no approval process. Now, that comes at a cost, right?
44:34I don't know if you guys heard the story with Netflix.
44:37So Netflix had an Android application, they put it up into the store, it was there probably for a number of hours...
44:44...maybe half a day, 12 hours, and they realized there were some serious problems with it.
44:48Well, it was up there long enough for someone to see what it looked like.
44:54And when it got brought down, another application took its place, not at the same URL...
44:59...and if you read the fine print it probably wasn't from Netflix, Inc....
45:04...but someone mimicked themselves being from the company, put the app back up...
45:09...and it was collecting information.
45:12That would not have happened in the App Store model.
45:15So there are pros and cons.
45:16It's more open, but there's a danger involved with that.
45:20I even talk to a lot of folks who are now putting virus protection on their Android phones and tablets.
45:27That's how pervasive it's gotten.
45:31Okay, so that's the App Store.
45:34The other option you have is for internal deployment in both models.
45:39So we see here that I've got icons to represent the different types.
45:43On iOS you have the ability to build your binary...
45:47...and have an install through iTunes.
45:51What does that mean?
45:52It doesn't mean the App Store, it means you load the application into your iTunes application...
45:58...running on your laptop or desktop, and then you take a physical wire and you sync that application...
46:04...up to your iOS device, much like you sync songs up or photos.
46:10Awkward deployment. Very awkward deployment.
46:14The other option you do have is to deploy your applications through an internal website.
46:22Apple has two developer programs.
46:26One is a standard program in which you use to only go to the App Store...
46:30...and to do some ad hoc installs for beta testing, that's the standard program.
46:35The other program is the enterprise program.
46:38And the enterprise program allows unlimited installs to any devices...
46:44...that your organization has issued...unlimited.
46:48And it's with this enterprise program that you can install these applications through your internal website.
46:55I'll show an example of it in a moment.
46:57On the Android side of things, it's actually quite easy.
47:02You can take your APK file, your binary file, and you can put it up in an internal website...
47:07...you can e-mail it to someone and they can install it.
47:10You've got a lot of options when it comes to that.
47:14Okay, let's quickly take a look...back to the iPhone.
47:28I'm hoping you guys can see in the upper status bar right beside 3G, I've got VPN enabled.
47:36So what I've done is I've downloaded an application called Juno's Pulse.
47:41It's free in the App Store. And I've signed in via VPN to my internal network.
47:49And what we've done is that when we have daily builds of our ArcGIS application...
47:56...and these daily builds need to be tested on a daily basis.
48:00And so rather than go through the clunky and awkward install process of going through iTunes...
48:05...we've hosted this APK on an internal website.
48:12And so I've bookmarked it.
48:15Now, this isn't a website that's going to win any awards for design or anything like that.
48:21It's a very simple website, that I'm hoping I'm still on VPN for...And all it's got is one button.
48:33And that button says, Install ArcGIS. I'm hoping this will work.
48:56I went to another internal site we have.
48:59All of our samples that we ship with the product...
49:01...we also make available internally through this website.
49:04So again, it's not going to win any design awards.
49:07All they are, are a number of buttons; I click on one of the buttons...
49:11...and I'm asked if I want to install the app. And I click Install.
49:17Much easier, much cleaner way of distributing applications, especially on iOS.
49:24With our daily build, we actually have a very similar website...
49:28...it's just got one-button install ArcGIS.
49:32So while the delivery mechanism for Android is actually much cleaner and much easier...
49:40...iOS does provide an enterprise distribution where, if it's set up properly on the back end...
49:46...the user experience in terms of accessing and installing is the same as it is on Android.
50:01Okay, how do we get started?
50:05I'm not going to spend a lot of time on this, because as I said when we started out...
50:10...I am the only person in between you and the social.
50:15So how do you get started? Very simple. Resources.arcgis.com.
50:20We've got a resource center for each of the mobile platforms.
50:24That includes iOS, it includes Android. You can download the SDKs...
50:29...from either one of those sites, install them, they integrate with the IDE.
50:35On the Android side, we deliver the technology via an Eclipse plug-in.
50:39So the only IDE we support is the Eclipse plug-in.
50:44You install it, the samples get integrated. The technical help gets integrated with the IDE.
50:50Same on iOS.
50:52Not the samples, but we integrate with the Xcode IDE...
50:56...that includes help as well as code completion, all that stuff.
51:03Now, we also have online resources.
51:06Some community resources like forums, code galleries, things like that.
51:10We also provide the latest and greatest help, both API help as well as conceptual help.
51:18So we do get a lot of questions.
51:20Hey, can I develop a native iOS application on a Windows machine?
51:28And, there's two ways to answer this...yes and no. The real answer is no.
51:34If you are going to use a native Objective-C API, you need to develop on an Intel-based Mac.
51:42You need that. Now, people say, Oh, but wait.
51:45I've downloaded...I've got model touch.
51:48It integrates very well with Visual Studio, and it compiles down to native Objective-C...
51:54...same with the latest version of Flash Builder, oh yeah, it's great.
51:58Inevitably, you need to edit the Objective-C code.
52:02It doesn't get translated and converted perfectly.
52:07So inevitably you need to intercede in that process.
52:11So for true native development, you do need an Intel-based Mac.
52:16A device...I don't even recommend a device for development.
52:21It's a requirement.
52:22When you're developing user interface and user experience...
52:25...it's one thing to use the emulator and mouse to click on buttons, a mouse that's maybe two pixels wide...
52:34...versus actually trying it on the device where your finger is 30-35 pixels wide.
52:39And if your finger is like mine, it's probably 45.
52:43So there is no substitute for actually going through the user experience...
52:49...and evaluating user interface design except on a physical device.
52:58Oh, and I mentioned the integration with Xcode.
53:01On the Android side of things, I mentioned that we delivered an Eclipse plug-in.
53:06You can develop on a Mac, you can develop on Windows.
53:09Just download the Eclipse IDE.
53:12Of course, you'll need the JDK, the Java Development Kit.
53:15You will need Google's SDK.
53:20Once you have that, our plug-in works with these technologies...
53:23...you'll be able to develop your GIS and mapping applications.
53:26Now, I will say this, when you go ahead and download the Java SDK...
53:33...you're going to say, and you're going to probably e-mail me, or you're going to post something...
53:37...on the forums that says, Wait a minute, am I doing something wrong?
53:40I can't use the emulator.
53:43You're not doing anything wrong.
53:48Did that happen? Kinda, sorta? Yeah. You're not doing anything wrong. It's not you, it's me.
53:55The emulator doesn't support open GO. Open GO SE2.
54:03We require, and the SDK uses, Open GO for rendering, for performance of rendering, for a lot of good things.
54:12Now, Google tells us that they are going to support it in their emulator.
54:16But until they do, the only way to test out your apps in development is to debug on the device, not the emulator.
54:23So you're not doing anything wrong, don't worry.
54:26At least not that.
54:27At least not that. There's plenty of other pitfalls, yeah. We can talk after.
54:34Alright, so just in conclusion and in general, getting started is actually quite simple.
54:42Of course, you've got some technology you've got to download including our SDK.
54:46You go ahead and develop, then you make that decision...
54:49...whether it's going to the App Store, or market, or whether it's an internal app.
54:54And of course, the deployment or the installation happens.
55:00There are some attribution that we require. Pretty small stuff, actually.
55:05Something in the about box, or your credit of your application...
55:07...that says hey, you know, the mapping components are provided by the SDK by the API.
55:14If you are using our basemaps that we host online, we do require use of the logo in the lower left.
55:23Many of you are going to use your own authoritative content...
55:26...your own authoritative basemaps, you don't need the logo.
55:31And then I've got a couple of...
55:33...just a couple of slides for resources, but don't go furiously writing this down.
55:38I think the slides are going to be made available.
55:40But basically, the Apple iPhone developer center is your friend.
55:46One of the very important documents on there is the HIG, the Human Interface Guidelines.
55:51It's actually a very helpful doc in terms of developing snappy UIs...
55:58...on both an iPhone form factor as well as an iPad form factor.
56:03Also, there are some...I'll call them rules that Apple has implemented...
56:08...whereby if you don't follow them, your app will get rejected.
56:13For example, on the iPad, you can only have one popover window open at the same time.
56:18So if you click a button, it opens a popover, you click another button it opens a popover...
56:26...you need to make sure you kill the original popover window.
56:30Small stuff like that will get the application rejected.
56:35Of course, the resource center that I mentioned has all the resources.
56:38Our resource center, that is.
56:39Some great mockup tools through a plug-in called Mock App.
56:45They actually have a PowerPoint plug-in as well as a Keynote plug-in.
56:51So if you're on Mac and you use Keynote, they have a plug-in.
56:55And basically what it is, is, well, it's a template.
56:58And you bring in the template, and it's got all of the UI elements you could ever imagine.
57:04You click, you drag them on your screen, you copy, you paste them, you move them around, and they're all to spec.
57:10They're all to size. So it is a good way to mock up your applications.
57:16You can make them linkable, and hyperlinked, so you could actually click on your slides...
57:21...on the UI within your presentation and show the next screen that's happening.
57:25Great proof of concept if you're trying to get an app approved by your bosses.
57:30Screen casts, iTunes U has plenty of iOS, Xcode, Objective-C programming videos...
57:40...some great books from Apress if you're beginning; the beginning iOS development...
57:45...using the SDK 5.0 from LaMarche...great book.
57:51Some good Objective-C books there as well. On the Android side it's similar.
57:56We do have training actually, web training that's specific to both creating applications...
58:02...as well as authoring web maps that can be used within the existing ArcGIS app.
58:07But the Android developer site is your friend, right?
58:11They have plenty of resources, it's akin to the iPhone developer site.
58:17I think it's android.develop.com.
58:20Go to it, Google it, it's got everything from deployment...
58:23...they've actually just recently come out with their own guidelines for UI, which is actually good.
58:29Even though there's no acceptance process or no approval process, you want to follow those guidelines as well.
58:36The user interface on Android devices is different...
58:39...because you've got hard keys versus only soft keys on an iOS device besides that Home key.
58:46So do read the interface guidelines, it's going to help you out a lot...
58:50...especially if you're developing native applications between the platforms.
ArcGIS Runtime SDKs for iOS and Android
David Cardella gives an overview of ArcGIS Runtime SDK for iOS and ArcGIS Runtime SDK for Android and how they can be used to extend the reach of your GIS to mobile devices.
- Recorded: Feb 23rd, 2012
- Runtime: 58:56
- Views: 1340
- Published: Mar 23rd, 2012
- Night Mode (Off)Automatically dim the web site while the video is playing. A few seconds after you start watching the video and stop moving your mouse, your screen will dim. You can auto save this option if you login.
- HTML5 Video (Off) Play videos using HTML5 Video instead of flash. A modern web browser is required to view videos using HTML5.