 Hi everyone. Hope DrupalCon is going well for you all. We are here for building mobile apps using Drupal as a base system. We're going to talk about mobile apps and why to use Drupal in the behind it and how to manage data and other things. So, all right. My name is Sumit. I'm a freelancer as well as a private contractor with civic actions. I've been doing Drupal for like four years now, building a lot of mobile apps, using Drupal as a base system, apart from the website I've done. And you can contact me, SumitK at SumitK.net. I'm SumitK everywhere, by the way. IRC, Twitter, anywhere you like me to. And that's URL to my blog if you'd like to know more. So, why we are here today? We want to build for mobile. So, that's like everybody likes apps. We just love them. Like my meal, my location, my what I'm looking, what products i'm using. We just want to share everything using our cell phones. We just don't want to wait to get home, get a picture to upload it to My computer and share it with my friend. We just want to do it right away. So, for that reason, we want to use apps and we want to build them. So, and there are numbers which say, speaks for themselves, like more than 25% of the U.S. market is using iOS now, including ipad, iphone, and ipad. And then 26% of the market is using android devices, which runs on more than 80 devices these days. And the other player is like a ram and blackberry, which are still in lead, but they are coming lower and Lower day by day. So, there are a couple of reasons, A couple of strong reasons to think about your mobile Strategy and how to build apps, what to use, how to do it, And how to achieve your goals. So, is mobile development Really expensive, or is it like, i don't know. So, yes, it is expensive. Like, if you think about it, You are building a base system behind it. Like, for example, you build a drupal website, you know How customized system you're trying to build there. So, if you're trying to build a mobile app, you're building a Whole system behind it to support it, support data, Support configurations, support all the users, content, Exonomies, and geolocation, and data, maybe. So, and after that, then you get into mobile development Side, which is like ios using objective c, or android using Java. Those two are like beasts again. You need to learn it, there's a learning curve, and It's like long development times, and that gets you to Like little worries, like, that makes you a little worried What to do, how to proceed in that direction. So, what we do, like, when we try to figure out something Simpler, we look for tools. That's what we did. So, that's like xpcd, and somebody is trying to use That as a tool. So, yeah, we looked for tools In the market, what kind of tools that we can use to build These kind of apps, easily, fast, in a cost-effective way, Which can do out of the box everything that we like them to. But there are so many out there in the market, like there Are so many tools, which one to choose. There are so many big ones out there as well, like Titanium is a bigger one, and then there are a couple Of market-based tools around, and then there are more. But, like, we choose titanium as a, like, it's a clear Winner in my view. It's, like, really effective. You get native apps, and it totally works with, like, Drupal as a base system that you try to do in your apps. And, yeah, it totally works out of the box, and it's Really great, and i'm going to explain that later on in My presentation. And, except that, like, it's Enterprise supported already. So many bigger enterprise and Corporations are using it. The nbc universal just launched Their ipad app with it, which plays so many videos, and a lot Of content is there. It's a free app. You should, if you want to see it's, like, what you Can do with titanium, you should totally want to Download the nbc universal app and see how it could be Used in your products. It plays videos, there are So many sharing things in it, and then you can browse Shows and other content from their web-based system. So, the question is, like, what is this? What is titanium or explorator? So, titanium is, like, It's a free framework which allows you to build Applications for phones and for your tablets, for Desktop, and you use, like, almost 90% of the same Codebase for everything, even for desktop or anything Else. So, this is a free open Source framework that you use to build applications, and The major part, which is a good thing, is, like, you Don't have to learn any new skills. You're just using JavaScript, html, css, your existing web development Skills that you already know. So, it uses them to Write your applications, and you get your application out Very soon, very quickly, low development time, amount of Code is very small compared to objective c or java code, And you get native apps, that's an advantage. And it's open source. So, did you say, like, a patchy 2.0 and open source? We love that. We love Drupal, we are a Drupal con, and we know We all love open source. That's the best part around Titanium. So, what else it has? Like, it has a modular approach to add new functionality to Your existing framework. It's open source, so you can Focus it down, customize it according to your needs, or Your corporation's needs, and there are lots of Available apis of the box, like social networking api, And yql api, and so many others, which are, like, Available out of the box. You can use them to build apps, And then it supports iphone and android out of the box, and Blackberry is still in beta, and it's there for developers, Not for other people at the moment, but it's pretty Stable, too. And the best part is, like, It's low development time, which reduces the cost of Project, and reduces everything around it. So, that's the best part. And it's scalable, and you Want to build it fun, and scale it to another level, to Another level, it's totally possible. You're maintaining just One code base for everything, so that makes it that powerful. So, the question, while you're here, why do you use drupal to Manage all the mobile applications data? Well, you know drupal, and it's an out-of-the-box perfect System for this. Drupal can manage all your Data and content. It can manage all your Sessions, and cookies, and user registrations, user Login authentication information in a secure way, and You can do very customized things very easily, using Drupal, like search or creating views, like Extracting data, writing queries, using views, and a Lot of things that you can think of, like user Relationships, managing friends, managing followers, and Comments, geolocation-based things. So, there is, like, it's a very powerful system. That's why we choose drupal as a back-end. And the part is, like, it reduces the cost of projects A lot. It's the same as you're trying to Build something from scratch, using html or php, and Then build a system on it, or you want to use a cms System behind your application, which is, like, so Much capable of doing a lot of stuff that you want to Build. So, everyone is bored. Big ones are bored, first. So, what else do we need? We need to get into the stuff. And how to use drupal, basically, to manage your Data in mobile apps, and what are the things that We can do with it. I'm going to explain that Later in the slides. So, first of all, like, Drupal has a services api, which is the perfect Thing for it to make, which makes it perfect to Use it as a platform for mobile apps. So services api is, like, it's a module. It's here since drupal 5. It's very stable. It's a branch, like, it's 3.x right now. I've lived for drupal 5, drupal 6, drupal 7. Very well supported. What it do is it makes drupal To act as a web service or api. So it gives you the endpoints where you can make Your request and get data out of it. In using res server or json server, whatever you like to. We'll talk more about that later. So, basically, services api is consisting of three Things, three major layers. First one is services. Services is, like, what you want to do with your drupal Site, how you want to get data out. For example, I want to extract user information out Using user.get. So that is a service. User.get. And if I want to extract out Views data, views.get is another service. In similar way, we have servers. Servers are, like, how you are making requests to services api In drupal. So, for example, we want, like, Request xmlrpc format and get xmlrpc back. So that's xmlrpc server that we have. And similarly, json and rest servers are coming along. And authentication layer, which comes in between the server and Our request. Like, it makes sure you Are authenticated. You are authenticated to make the Request to the drupal base system and, yeah, which makes It more secure and fun. And more about, like, titanium Architecture, how we're going to build. Our stuff is, like, we're going to write our code in JavaScript, css or html on the top layer. And then titanium is going to take it and, like, It's going to compile it to objective c or java and run it On ios or android devices separately. So we are writing once, but we are using the same code to do Multiple things for ios and android, in this case. And similarly for dextop and blackberry. Dextop has, like, a little bit different api and ways to do Stuff, but, yeah, blackberry is almost similar. So getting more into the features of titanium and what it is, Like, it provides you native ui functionality. You can write native ui code in java script and use it in the App. Then it's got a very rich media api, Which enables you to do, like, video streaming and video Recording and photo clicking and using the gallery part of The app and things like that and recording audio and stuff Like that. Then there's, like, very powerful Location api. You can get the location inside the App and save it or use it whenever you would like to. Then the remote and local data is something very efficient. Like, you can save the application's data in local Database in a sqlite way. And remote data is, like, You can make xchar calls to whenever service you want it To be. It could be drupal or any other XML or any other json service you want to fetch data from. It also has, like, some other features like analytics and stuff. If you like, if you're interested, you can use them. I've never gotten those. Then it provides social api, Which is, like, really exciting. It gets you functionality For sharing on facebook, twitter, out of the box. You can just use the basic api to share your stuff. Like, you register your app on facebook and you get the ids, App ids and app secret. You use them in the app and you can Share stuff on facebook when whatever user is doing. Similarly for twitter, but it's, like, more complex. You need to look and hook into the auth adapters and auth To do more twitter sharing. So how this all fits into Drupal and our app and how to do stuff. So what happens is, like, drupal is going to manage All of our data, users, and all the information that we want To use in our app. And then we build the titanium Apps, like in javascript and others, web technologies. And then we compile them for our ipad, iphone, or android. And then we fetch the data from drupal directly into our apps. So this is something. Next, i want to give you, like, Little examples of what we can do and how stuff we can use Drupal into it. For example, like, if i'm, If there is a closed system, i want to just user who have Login to my website. We can build systems like Drupalize.me, which is a closed website which Enables you to watch videos and drupal tutorials, but you Need to log in first. So there's a website which, If you have a login for it, you can get into the app And you can watch videos. So it authenticates you to your Drupal website and gets you back there with authentication Session id, and then you can make other calls using your app. So similarly, if you, similarly, it's the views listing. Like, it's fetching a view out from my drupal site and Building a table on the app. We're going to demo these Later on in the presentation. So these are, like, the basic Things that you can do. Like, whatever you can think of A drupal website, you can do it on mobile apps. Then you can add new, create new nodes on a drupal base System and save all the user content there, whatever they Like to say. For example, in this case, We are showing a form which enables you to add new Workout on, it's a gem app which user can create Workout and then they can post the workout sessions Onto it. So these are all nodes and A lot of user references and node references. And they're all handled by app. You just send the data back By a node.save. It saves it on your drupal site. All the data is saved over there. And you've got very complex Data structure handling, very easily using drupal. It's, it's, like, and then there's, like, this, the Other example is, like, you can, if you have an app You want users to just download it and register Account. So in this way, like, you're Just creating a new account. It will save all the User information data. And then you get into the App, you do stuff, and you have an account on drupal-based Website, and you are using your app. For example, you might have used instagram app or some Other examples which, which enables you to create Account and then do stuff or, like, upload photos. And we're going to get into examples later on with Mealcam too. After that, like, they're, Like you can do searches. Like, searches could be very Having everywhere. So you can, like, use Search service on services api. You use node service or A patchy service to search content there. And it will just fetch out all the results and fill a Table for you. Then you can play these videos or look Into the details, whatever you like. And the other thing is, like, node display, content Display. You can fetch more data, More pictures and stuff like that. Kind of video and Taxonomy terms around it. And you can display it on, Like, in the app. After that, like, you can Build listings directly using views and taxonomies. So for example, i have, like, ten taxonomy terms. I want to act those as my browse section of my Application. I'm just fetching a view from My site, listing it over there. Then i'm clicking on one Of the category, which is fetching another view, Making tid as a call, and it's fetching me the Data for that taxonomy id. So, like, it's using your Basic views and basic drupal knowledge that you use Every day site building to build mobile apps. After that, if you're getting, like, a complex data Structure, you can do, like, you can maintain user Crews using flag module. And similarly, you can use, Like, relationships module. And there are good Races around relationships built already in drupal.org. You can use them to, like, mark people, follow them, make Them friends, follow their content. So this, all this stuff Is possible, like, a social networking thing that you Want to build is possible from drupal-based system. And you don't have to write anything on the web Band or on the configuration, because all the things Are already there. Just using them As services, exposing them by services. After that, you get ipad apps out of the box. Everybody loves the ipad apps. You maintain the same Database, same code base, sorry, same code base for iPhone and ipad. You can build universal apps Which will work on iphone as well as ipads. And you just do, like, a little bit of configuration, Like, sizes and stuff to manage each of them. Maybe an ui, a little bit. And then you get out of the Box ipad apps with the same code base. That's most importantly. It's just displaying more of the ipad app and how we are building listing and stuff. And in the background, there's an image showing it's Debugged data that we're getting from ipad app. So, all right, a couple of demos i want to show you How to do stuff. Any questions so far? All right. I can see it there, but not here. All right, so let's try this resolution. Can you see my screen okay? Just give me a second. I need to go to my native resolution to get back to Other side of the window. Can you help me here? I just need to go to my other window. Just click on mirror display, maybe. Okay, it's better. All right. Can you see it okay? All right. So this is drupalize.me, ipad app that i'm going to demo. What it does is like it uses, everybody knows about drupalize.me. It's a video tutorial for drupals. And it's built by lolabot. And it's going to be in App Store very soon. It's in approval process right now. And what you can do is like you can browse all the Videos and all the content from drupalize.me and watch them On your ipad or iphone or android-based devices. So we're going to see if it's going to work here. Here i'm launching my ipad simulator. All right, here we go. Hope internet works. Fingers crossed. All right, i'm going to log in real quick using my drupal Credentials. It's going to authenticate me back to My drupal-based system. Here you can see it's making a System.connect call. First of all, it's getting an Enormous user id here. Then i'm doing a user.login Request with my username and password. And it's going to authenticate me And if internet allows me to. Is internet working for any of the other people? Is your internet working? It's got me an error. Domain code to request timed out. Let's try it one more time. Internet was a very important part of my demos. If it's going to screw up, we are screwed. Why don't everybody else shut down their internet for a while So that i can have a good bandwidth? I didn't. Do i have another wire? I got it back up. All right, here. I'm not sure how far it's going to get me there. Let me get on this wired internet. Okay, it's pretty fast, i guess. All right, let's launch it one more time. You can see behind it, it's called titanium studio, which you Will be using to develop apps in titanium. It helps you write code, compile it, and execute it on Simulator as well as real devices. And here i'm just launching my Drupalize.me app on my ipad simulator. Come on. Internet is still not working Good. Let's move to the next demo, i guess. If it's not going to work. Last time. So the background you can see is like all the debugger is Running, and you can see all the errors coming, the requests We are making, whatever data we want to send to logging, You can send it here. You can see it in the console. Okay, the other app i wanted to demo is called meal cam. It's using Drupal 7. It's a very simple photo Uploading app which enables you to, like, click a photo On your mobile phone and attach a couple of information with It, like title and description, maybe in this case. And it just uploads it to your drupal base website, under Your account, and you can browse all those photos there on Your mobile app, and you can e-mail those photos directly To your friends or maybe other things that you like to do. That requires internet, too. I can't hear you properly. Probably need to mic here. So, okay, can you see the SAP? I don't know why this is running like this. So this is a meal cam app. You can upload photos and stuff Using it. It's showing very weird. It's going to run like this in this resolution. So what you can do, you can select a photo or you can click A photo from the gallery. I'm going to select a photo From my gallery, and i'm going to upload this one. I'm going to set presentation back. Just maybe a caption otherwise. Good. Then you can, say, add it to my collection. It's going to upload it back to my drupal base system. It's showing me here that this is the detail of my photo That i just uploaded. And then i'm going to go here. I'm going to show you on the drupal 7 website that we Have for this. Okay. Come on. We are screwed without internet here. Okay, but the photo got uploaded somehow. See? Here we have the photo that we just uploaded. And this is the data that we sent to a drupal base system. So it is all authenticated. You create an account on the go And then you log in with that account. You authenticate via session id to your app to your drupal Base website. And then you send picture. And it uploads it and attach it to a node. And you can browse all these pictures here, whatever you Have updated in past. You can go in details and stuff. So this is a very simple example of what you can do. We are also adding locations to it, like displaying photos on Maps inside the app, fetching geolocations from drupal And maybe other sources, and maybe searching geolocation But what's going on around me using drupal? Using a location module, which is very powerful. Okay, the next app i'm going to demo is called twad. Let's hope internet works for that. Any questions so far? I had a question. Can you please pass the mic? Yes, we do. Yeah. You... There is a module for that barcode scanner. You can scan barcodes and get the information out of it. Yes, yes. So there is another whole set of new modules coming out with titanium. They call it the titanium plus, which is something going to be Related to our drupal app store kind of thing, where you can Actually buy these kind of modules. So they have already credit cards scanner, qr code scanner, Barcode scanner, and a PayPal API, very extensive PayPal In-app purchase system, and a couple of others as well For analytics and things. They're not that expensive. They're very cheap. You can use them in their apps. They have like a $200 a year subscription. You can buy that, and then you can use it in your apps. Yes, yeah. They're licensing. I think if you have license, you can use as many apps as you want. You just need to get a $200 or $400 subscription per year. Yeah. And you know the best part is it's a very active community. You always find open source version of those modules. So for example, urban airship is present in ti plus module set, But there are so many other alternatives out there which other People have proposed, and you can use any of those if you like. It's like drupal. You have many ways to solve a problem. For user interfaces, there is no ui builder, drag and drop. You need to write code, which is just javascript. With me, i coded textmate and compile it in this stuff. And with android device, i always use device. I never use emulator because emulator is so heavy. If you're developing in java or titanium, it doesn't matter. Emulator with android is like, it's very hard to work with. So yeah. It's stuck again. I don't know what's going on with internet. I'm sorry, guys. Yes, android is like a little slower than ios. That's true. Performance wise, ios and ipads are much better than android ones. If you want to have a feel of the apps, like if you want to Just try one of those, i have installed on my devices for iphone, iPad and android. If you want to just try them out, you can look at them. In android, it's not terribly slow, but it's slow. It's not as good as iphone. That's for sure. All right. Any other questions? Because you're not getting internet here. Do anybody else have that small 4g thing that can act as a Wi-Fi router or something? I'm not sure. Eclipse, they develop the titanium studio. It's built upon Eclipse, actually. Yes, you can. You have sqlite database access, And then you can maintain offline database. Then you can build actually the sync functionality. Whenever you get online, you can send data back and forth. I don't think that's going to work for very large applications, But for small applications, that's okay. Wherever the data structure is really small, but with big nodes And big user references, big node references. It's like building the whole Drupal inside your local app. I don't think there are any visual limitations to me. It's not like WebKit, which gives you just 5mp or so. It's pretty large that you can go on. What's going to work? What's the name? It's going to take a while. Which one is it? It's not listed. Thank you. Still connecting. Any other questions so far? Yes. Yeah, I will show you a couple of examples. The basic idea is you use services to do everything in Drupal. For example, i'm going to show a couple of the calls that we Can do using services 3.x. The call thing is right here. For example, i have my api endpoint at api. This is drupal 7 and services 3.x. For example, i want to fetch the photos from a view inside My titanium mobile app. Name of the view and then use the rest api, making view Name.json. It tells me that i want results in json. Then i'm going to pass arguments. I'm passing as 1, which is for user id 1. Then i'm passing at the limit and then offset value as well. So it is going to return me data of a view. Let me show you how it works in the browser if my internet is working again. No, it's not. I guess you've been to many presentations where demos were Screwed up by internet. So yeah, a call like this will get you data from a view. Similarly, you can do with user objects. You want user objects. So you do api slash user 1.json. It will pull me data for my user 1 object. And then if you want to update a node similarly, all the It's similar to rest api. You're going to make calls, xhr calls, using your titanium api To a drupal-based system. You create nodes where node and then send title, body, Information. It just creates node in your transpec and node id. You need titanium. You need the basic app setup. And then you just use the xhr. On the drupal side, you need to install services api module. And that's pretty much it. That you just need a new service. The link to module is product slash services. That's what you need to install. That's it. It enables you to act as drupal installation as a web service. You have access to different apis regarding on your membership. If you have the community membership, you have access To the basic apis. If you have the pro membership, you have access To the pro apis. What happens if you change your membership? Will your old apps still work, even though you don't have The pro membership anymore? According, I am not positioned to answer that question. And that could be a little complex. But I don't think if you are not signed to a contract, You can use that in your applications. That makes sense, actually. Because if your contract is not valid, then you're Definitely working the contract. But it's not that expensive. Are you talking about titanium plus modules? Yeah, absolutely, plus modules. Yeah, you need to have an active subscription to be Falling those rules. Because I was wondering if I ever decide to get into Really native iphone programming, will I still be able To use my old apps, or will my old apps Not work anymore if I ever cancel them? They will work. You have the code and everything. It's not a binary that you're getting. You're getting the code. So they will be working, but you're not using that Legally. That's the only thing. I'm not that familiar with it. They change it every day. They are just in process of building their company As well as all these kind of enterprises. Yeah, it's like the whole product is open source. The bi plus modules that you talk about, like the br barcode scanner And those credit card scanner modules, they sell those things. Okay, we have a working internet now. It's great. Excuse me? Yes. Did you compare titanium to phone gap before choosing titanium? Because it's fully free from gap in comparison. Yes, phone gap is free, but it is a WebKit based. Titanium is like native. Native is fast. Native is like you use a native app, you use a web browser. You know the difference. So native is definitely fast. You get all the native APIs. It's faster loading time. It's faster using it. And you get more done with it. Like it gets you, like it restricts you somewhere. The phone gap won't give you access to whole device, whole device things. It gets to everywhere, whatever you like. Let's try to prize me. I'm hoping it will work now. All right, here we go. So this is like you logged into, you're using your Drupal account. You have a view of all the new videos and all the popular videos. We also put a thing called like, whenever you reach the end, you pull up, you can load more videos. This is just a view from your Drupal website. And you're fetching the photo, the title, the time of the video and taxonomy terms related to it. Then you're going to click on it. It will take you to the video detail page, which is like a node.get call using Titanium. And it works both ways. So then it gives you links to more details of it and then the related videos and the other videos in series section. You can try playing this video inside it. Hope Internet supports this. So this is like multi-media. Using the media APIs, we are playing video. Using XHR API, we are fetching stuff from Drupal website. All the data is on our Drupal site and you are just using it on a mobile app. You have to have a Mac. This is our iOS simulator. It's Xcode. There's nothing there. Any other questions? Internet is quite slow, guys. As far as I understand, the application logic, especially the front-end part, is JavaScript, as you said, right? Yes. Can you see a little bit of that to see how it looks like and how you program it? Yeah, sure. Yeah. Just trying to... I don't know. Okay, here it played the video finally for us. So this is running on Titanium API and fetching video from CloudFront service using Drupal. Yeah. So, yeah, I will answer your question in a minute. I'm just trying to demo this first. So here we are actually doing a lot of things, but whatever we can with Drupal. So I can search here. For example, I want to search if there is a video about Twitter on my Drupal.me website. It's going to make a call to Node Search on my website and it's going to fetch me all the videos and you can view details and watch them. Then similarly, the queue, which I told you about, it's fetching a view for my using flags module. So if I created a queue using flags, it's fetching me that view here. I'm displaying data. And the user information is, again, user information and you can... Under browse section, we have list of taxonomies, the kind of videos that you're going to have on the... On this app. So then we are using views to get into... When you click on it, it will fetch all the site-building videos using views. Excuse me. So yeah, so this is like the kind of things that you can build and you're using media API to stream and to play videos and stuff. I'm going to show this trod stuff. In this app, we are saving a lot of node content on the web-based system. It's just doing a lot of stuff, complex stuff, in the background. Any other questions in the meantime? I'm just trying to make it work. Yes, you can. You can access everything that you like. In the meal camp, we have the accessing address book option. You can select the contact from there. It gets you the information in the contact. So for that, I will tell you to go to... To download NBC Universal app. It's for iPad and they are doing very nice UI and configuration things in there. It's like very complex app. That will give you the things that you can actually build with it. So this is another thing that we built. This is a titanium-based, using Drupal-based system. You have classes and then under classes, you can... This is a gym app. So gym has classes for each day. So it gives you a list of class. Then you can select the students who are doing... Attending a class and then you can save workouts for them on a Drupal-based system so that they can go back and see their workouts, their mob workouts and stuff. Then you're going to select the workout for them. Let me actually rotate it to the left so you can see the rest of the app. So I can see there is one workout for this class. This is another node that it just pulled from a Drupal site. And I can see now the workout details. It's like type of workout description. These are all different cck things that we have. Then we can have like a start timer. Do use the native functionality of device as much as possible. So here I can start timer and then record There's things on the go. So I can use these touch functionality to save data. Or maybe if I'm more interested, I can add more details to it. And I can mark them rx. Then when I press add session result, it's going to create A couple of nodes back on my Drupal-based system Giving all of them there. So yeah, and it just added. And if you want to see them, those results, you can go to Leaderboard and you can view them how what we just posted. You can see under this class, this was the workout. And who did this workout and what were their records? You can view them. So everything is Drupal in here. There are a lot of node relationships, user relationships. All handled by Drupal. We are not doing it. We are just using views to expose all of our data For our app. So yeah. So about your question, like where, how to write that kind Of JavaScript. And so I think I can show you some of it. For example, like if I want to add a row and like a table View row, I'm just defining the stuff like avatar, avatar. This is not a perfect example to show that. Let me get into ui underscore styles. Okay. So for example, like for the buttons, I have defined styles In javascript as like background image, background selected Image, height, width, color, the font, the title on the top And the font weight, what we want to be, and maybe the Font name in some cases. So similarly, you can define these, like all the css Properties work here, almost, almost all of them. And then there's like you can do things like shadows and Stuff. And the amazing part is like you can also do like Very cool animations in the app screens. So you can, they are all native in it. And they're very fast. Any questions around it? Okay. So that is something, if you're more interested, you can Read on my blog. I'm going to blog more about it. But yeah, that is something like complex. So how user authentication works, it's similar to Drupal. But in mobile case, you need a session id to Authenticate back to the site. First, what you do is like you make a system.connect Request, which returns you back an anonymous session id. Then you use that session id to make a request for user.login Service, using that session id. And you send username and password. It authenticates you and it sends you the user object. And when you see it's a fine user object, you verify Roles and everything else, then you give them Access on the app. These are like three steps that you have to do. While creating account, it's the same. You do a system.connect, you get a session id, then You make a call for user.add, and you pass the Email username, password, and other variables, and it Sends you back a user id, which it just created. So like bridging is like, it's just making an XHR call. I can show you the code, but I was just trying to Show you like how the endpoints work in Drupal Services API. So for example, this is my services in Drupal 7. Install. I have an api as my endpoint, and I'm making a call to Mealcam.photos.json. So it should actually get me back all the photos which User one has uploaded to be the limit of 15. Internet is not working. Okay, it worked. So it returned me the json for that request. And I'm going to use this json to fill table on my Or maybe any other view on my app and going to display Data over there. So here you can see it returned me all the node Objects that I requested. Field, Meal, and it's uri in public For files directory, title, and other content. So this is a field view, I guess. Yeah, I'm just calling for title and body and image Part of it. I'm not sure yet, but yeah, it's almost this. But yeah, there's like a lot of information on Services module page. You can learn more about services there. There are a couple of tools listed which will help you to Make, like, test requests to services api and see what is Coming back and how to send data in there. And I'm going to show you how the xchar call works. This guy requested here and here. So, for example, for user get, we have, like, user.get Service. You use a couple of variables like time stamp, Customs, URL, then build out a hash out of it. Using sht256 algorithm, and then use that hash to Authenticate your app to the service, and then drupal Get you access, and then you send the data here. Inside of this, you send your json string, and then You get the code, then you get the values back and Download function, which is, yeah. So that's how it works. No, it's not necessary. You can use, it's fine, but, like, yeah, you would like to Use json because it's very light. It's stripped down, very less data is flowing over the Network, the best part. And you know the json, like, titanium supports json out Of the box. They got, like, these functions in both json. Stringify, json.serialize. So you can use them out of the box inside the app. Yes. Is there a p list support built in as well as for json? P list, property list. I don't know that. High-performance, binary. P list support. Yeah. No, I don't think I have seen this, that in, you can Write your own module if you like p list support. But why would you like to write a p list if you Support json? Like, I always prefer json over p list. Just because it's binary and it's quite light. And there is p list server for Drupal, which works quite well. Yeah. Like, it's the same support for p list or json. It's supported both ways. I know. The services, yeah. But I don't think it supports p list at the moment. If you've got data from a Drupal site and you've got An app where you go to a client meeting and you Can't get internet connection. And you've got some data on the application Installed in a SQLite database, which has been Copied from the Drupal site. Is there any tool that allows you to synchronize the data That's stored on your phone with the Drupal site so that When you go back into the office and you've been putting Information into an app, it just sends it straight to Drupal. Yeah. You can write your own caching layer for that. What you do, like you save everything inside a Database, local database, SQLite. And then you build a sync functionality. So whenever you get online, you can enable that sync Thing. It's the same as you do in evernote or a Wunderlist app. Like you save all the data and then you sync it to Your servers in the back end. Everything gets to the server. And when the sync is done, you can maybe delete that Local database or whatever you like to do with it. You can mark it like a sync. Is there much of any tools or any software already Written to allow you to do that without having A synchronization tool? Are you asking, is it supported out of the box? Well, is there anything available, you know, that we Can download so we don't have to write that? No, not at the moment. I have never written a caching layer for it. But there are, I know the titanium people are Working on a caching layer, which is going to be Supported very soon. So they're also working on like they're in App caching. So you can cache stuff and then you can sync Back whenever the network is online again. Cheers. Any other last-minute questions? Just one thing is, if anyone wants to get started Is to have a look at kitchen sync. I don't know if you want to show people, but that's Quite a good example for people who want to learn. Yeah, yeah. Actually, I'm going to give you like a link to Other references. So other resources like there's a kitchen sync App, which is like really great. They have put a lot of ui examples as well as other Kind of social sharing examples in it. The accelerator maintains it and it's level on GitHub. It's open source. You can fork it down. Or if you have an android phone, you can actually Download it from market. It's free. And you can play it around with the devices. And then there is services api link over here. Then there's another good tool is called test flight Tap, which enables you to like upload your application For testing so that other people can install it on Their phones from their e-mail or just browser. So you don't have to sync it back. They're cell phones using itunes every time. And there are more documents available on Absolator, development site. And you can also, there's a good library called Redux, which just makes you write less code. You can use that too. And yeah, send us reviews what you think. It's going to be, you can find session on the schedule page. You can click on the take the survey link and you can Post survey results there. All right. I guess that's it.