See Hipmob in action on iOS with Wanderplayer and Android with Wanderplayer

Sign Up Here

Hipmob For iPhone & iPad


Overview

Hipmob provides cloud-hosted live chat for iPhone & iPad (and Android) apps. You get an app key, integrate the Hipmob library into your app, and then you can chat with your users in real time to solve their problems and make them happy. No server setup, no extra steps or code to write, wherever the users are, you get to focus on what you do well. This document covers integrating the Hipmob experience into your iOS app.

15-minute integration on iPhone

To see a prepackaged version, look at the Hipmob support chat sample or the Hipmob direct messaging chat sample on Github. These are fully functional Xcode projects that integrate the Hipmob iOS framework. Clone the repository, open the project and look in the the AppDelegate class (for the direct messaging sample) or the TestViewController class (for the support chat sample) and stick your own key in, and you're all set! Launch it in the debugger and start chatting away.
To integrate Hipmob into your own project, read on.
  1. Add a new app in your Hipmob account. Once this is done, we'll generate a Mobile Key for your app. Remember this - you'll be using it shortly.
  2. In the Link Binary with Libraries section of your project's Build Phases you'll need to add the following Framework Dependencies:
    • libicucore.dylib
    • CFNetwork.framework
    • Security.framework
    • Foundation.framework
  3. We use Objective-C categories in the Hipmob framework, so you will need to go to your project's Build Settings and add -force_load to the Other Linker Flags field.
  4. Download the Hipmob iOS Framework . This includes all the dependencies required (see the Framework Options section for more details).
    Note The Hipmob iOS framework currently only supports iOS 4.3 or higher (the armv7/armv7s architectures). We provide a universal library with support for running the Hipmob code in the simulator as well.
  5. Copy the Hipmob framework folder into your project by dragging the hipmob.framework directory into your Xcode project. Make sure you select the "Copy items into destination group's folder (if needed)" option. Once you have done this, open your build phases (under your project's Build Settings screen) and add the resources from inside the framework into the Copy Bundle Resources section: you will need to select the images used for buttons and backgrounds, but NOT the hipmob.h header file.
  6. Include the hipmob header wherever you will be creating hipmob viewcontroller.
    #include <hipmob/hipmob.h>
  7. Initialize the hipmob view controller with your HIPMOB_KEY from above.
    hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY] autorelease];
    You can also initialize with a custom title as well.
    hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andTitle:SUPPORTTITLE] autorelease];
    Finally, you can pass in an NSDictionary with additional user interface settings.
    			  NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
    			  [settings setObject:[NSString stringWithFormat:@"How can we help?"] forKey:HIPMOB_SETTING_TEXT_ENTRY_PLACEHOLDER];
    			  hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andTitle:SUPPORTTITLE andSettings:settings] autorelease];
    			
  8. Present the hipmob view controller modally.
    [self presentModalViewController:supportvc animated:YES];
    Some examples: WanderPlayer for iPhone and Killa Killa Whale for iPhone
  9. And we're complete. Build your app.
  10. Note If you see build errors complaining about CFHTTP or Security then you missed step #2 above: just add in the dependencies in the Link Binary with Libraries section of your project's Build Phases.
To chat with a user, you will need to log into your Hipmob XMPP account using your username and password from step 1 above.
Once you are logged in, ensure that your status is set to Available (we don't send any messages to administrators marked as Away).
Now open the chat window in the app, and type something. It should pop up in your XMPP client! Go ahead and reply in your XMPP client. It should show up in the app!

15-minute integration on iPad

To see a prepackaged version, look at the Hipmob support chat sample on Github. This has support for both the iPhone and the iPad. You can clone the repository, open the project, open the TestViewController class and stick your own key in, and you're all set! Launch it in the debugger and start chatting away.
The iPad integration works exactly like the iPhone integration: the only difference is that we offer a subview that can be used to enable chat while still allowing the user to interact with the rest of your app. To use our iPad subview, read on.
  1. Perform steps #1 through #5 above.
  2. Initialize the hipmob subview with your HIPMOB_KEY from above. Please note, it is VERY IMPORTANT: do not, under any circumstances, autorelease or release this object!. Because of the way that subviews work, we will handle this. The hipmob subview will be properly released whenever its parent view is dismissed.
    			  hipmobView * ipadchat = [[hipmobView alloc] initWithAppID:HIPMOB_KEY];
    			
    As before, you can also initialize with a custom title as well.
    			  hipmobView * ipadchat = [[hipmobView alloc] initWithAppID:@HIPMOB_KEY andTitle:@"Support Chat"];
    			
  3. Show the hipmob subview whenever you are ready.
    			  ipadchat.view.frame = CGRectMake(self.view.frame.size.height - 345, 50, 320, 240);
    			  [self.view addSubview:ipadchat.view];
    			
    Remember to keep track of the hipmobView and release it when it is no longer in use. You can check if the view is being displayed by checking the readonly displayed property of the object. To help with this you can use the willDismissHipmobView delegate method.
  4. And we're complete. Build your app.
  5. Note As before, if you see build errors complaining about CFHTTP or Security then you didn't add the appropriate libraries: just add in the dependencies in the Link Binary with Libraries section of your project's Build Phases.
To chat with a user, you will need to log into your Hipmob XMPP account using your username and password from step 1 above: set the domain to hipmob.com.
Once you are logged in, ensure that your status is set to Available (we don't send any messages to agents marked as Away ).

Requirements

  • Familiarity with iOS development. The embedded framework comes with all the prebuilt includes so you only have to include the Framework Dependencies listed above as you would normally in Xcode.
  • TouchJSON and SocketRocket: These are two libraries that we build into our embedded framework. They will collide with with local copies if you are are already using them. If you already use either library, you'll either need to remove them or to use the hipmob-bare embedded framework which will require that you include both of these.
  • Hipmob is compatible with apps developed for iOS 4.3 or higher.
  • As an administrator, you have to have an XMPP compatible client to connect to our servers (there are a ton of free ones: on Windows we recommend Pidgin, on OSX Adium, on Linux Empathy, on Android Xabber, and on iOS Monal or IMO. If you don't see your platform here we still love you: just reach out to us if you can't find one and we'll work with you to find one that works). Any other standards-compliant XMPP client should just work. We're also working on integration with federated XMPP servers (such as Google Talk and Facebook), and once that is ready you'll be able to use your existing messaging accounts.

Details


Framework Options

Hipmob's iOS framework depends on a WebSocket library and JSON parsing library (the excellent SocketRocket Websocket library and a portion of TouchJSON, to be exact). If you're already using either of these libraries, you should
a. make sure you build both and use the bare Hipmob iOS library, OR
b. remove them both and use the full Hipmob iOS library: it includes the SocketRocket and TouchJSON libraries already. Drop it in and you're ready to go.
Both frameworks include all the required images, so you dont need to add other files, or adjust search paths in XCode. Simply include the framework and include the header file and you are ready to go. Just initialize the ViewController and display it modally:

iPhone

hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY] autorelease];
		      [self presentModalViewController:supportvc animated:YES];
You can also initialize with a custom title as well:
hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andTitle:SUPPORTTITLE] autorelease];

iPad Chat View

This allows you to draw a Hipmob view anywhere on your screen and also let you interact with background elements.
		      hipmobView * supportvc = [[hipmobView alloc] initWithAppID:HIPMOB_KEY];
		      [supportvc setFrame:CGRectMake(150,50,320,245)];
		      [self.view addSubview:supportvc.view];
Remember to keep track of the hipmobView and release it when it is no longer in use. You can check if the view is being displayed by checking the readonly displayed property of the object. To help with this you can use the willDismissHipmobView delegate method demonstrated below:
@interface customViewController : UIViewController<hipmobViewDelegate>
Remember When specifying this in your header file you will have to include hipmob/hipmob.h in your header file.
supportvc.service.delegate=self; //specifies that you will be looking for delegate methods in your view controller
-(void)willDismissHipmobView:(hipmobView *)hipmobview{
		      [supportvc release];
		      supportvc=nil;
		      }
The last line (supportvc=nil) is not neccessary but it does make it simpler to test in case you use the same object and want to see if it has been released or not.

Note HIPMOB_KEY Is found in your dashboard under apps.

Framework Settings

Hipmob's iOS framework has several settings that can be adjusted to customize the feel of your chat as well as to integrate with our upcoming API. These are listed in more detail under Configuration Options. These are all variables that can be set on your instance of the hipmob view controller object. These must be set before the view controller is presented. If they are sent after they will not be sent to the hipmob servers. These parameters are enumerated below:

Peer-to-Peer only

iPad only

These can be set as follows:
supportvc.username=USERNAME;
		      supportvc.useremail=EMAIL;
		      supportvc.localdeviceid=unique Device ID;
		      supportvc.context=@"Any information useful for the operator. For Example the screen hipmob was launched from.";
The statusmessages object is slightly different than the simple keys that are being set above. This is a dictionary that contains the string that will be displayed to the user when certain status messages are received from the server. This will change as we add new features and new status messages become available. The full list of status messages is available below under Status Messages.
[suportvc.statusmessages setValue:NEW MESSAGE forKey:@"connecting"]

Accessing settings from the iPad hipmobView Class

To access these settings when using the chat view class you need to access the hipmob object that is created when you create your hipmobView class. This is demonstrated below:
supportvc.service.sername=YOUR USERNAME;
			supportvc.service.useremail=@"YOUR EMAIL";
			supportvc.service.localdeviceid=@"unique Device ID";
			supportvc.orientation = landscapeonly;
The setting display is read-only and allows you to check if the hipmobView is being displayed or not.

Framework Delegate

The Hipmob iOS framework also has an optional delegate that you can implement. This delegate keeps track of when the user dismisses the Hipmob subview, and allows you to handle custom actions when a URL is sent by an operator. The delegate will receive the URL pushed by the operator and allow the developer to handle it in the most appropriate fashion. The delegate methods are:

Framework Methods

The Hipmob iOS framework has several methods that can be used for certain features. These are listed below and described in further detail under Configuration Options.
To access these methods you need to call them on the appropriate object: when using the hipmobView (on iPad) use the service member.
[supportvc setAvailabilityStatus:NO];

Chat Sessions

Once the Hipmob view is launched (either the full screen or the chat view) it will automatically connect to the Hipmob communication network. The user name that will appear for the device is based on the device's name: you can customize the user name and email address using properties on the view controller or chat view's service member. The Hipmob View Controller handles all chat session setup and communication: it connects and identifies itself to the Hipmob communication network. This requires that the device's network connection be online and available.

Figure 1: Connecting to the Hipmob communication network

Once it successfully connects to the communication network, it checks to see if any admins are available (i.e. online and with status not Away). If it finds any, it displays the following text. This will be customizable in our next version.

Figure 2: Admins are available

If no admins are available, a different notice is displayed. This will be customizable in our next version:

Figure 3: No admins are available

User Interaction

Once the connection is established, the user can immediately start chatting: all messages will be routed to all available admins. When the first admin responds, all subsequent messages are then routed to that admin.

Figure 4: Messages on an iPhone

Figure 5: Conversation in the admin's XMPP client

User Information

As shown in Figure 5 above, useful user information can be provided to the Hipmob object as configuration options: this information can include the user's name, email, and context (such as the page the user is looking at when they launched the chat). The device's country setting is always available as that is obtained from the device: see the full range of configuration options available.

Customization: Notices

The notices shown in Figure 2 and 3 above can also be customized by the user: this allows the developer to use language that matches their app. See the Status Messages configuration options for more information.

Customization: View

The appearance of the default Hipmob view controller can be modified in a number of ways: See the User Interface configuration options guide for more information. If even more extensive customization is required a user interface source license can be obtained that will grant access to all the Hipmob UI source code and will allow complete customization to match your unique requirements: contact team@hipmob.com for more information about purchasing a user interface source license.

Localization

The Hipmob iOS Framework currently is still US English-only: future releases will support additional languages.

Push Notifications

Hipmob can be configured to send push notifications to the user's iOS device whenever a message is sent to them while they are offline. Read more in our iOS Push Notification guide.

Configuration Options


All configuration options are provided to the Hipmob Framework by the developer while integrating the Hipmob Framework. The options are listed below with usage examples.

Application ID

Description
The unique identifier that distinguishes this application from any other application that uses the Hipmob network. Provided by the Hipmob management console.
Required
Yes
Since:
Version 1.0
Type:
NSString
Usage:
This is required when initializing the hipmob object. If this is not included in the initializer, the object will be unable to connect to the hipmob servers. If for example your mobile key provided by the console is fefed30c17f0409f89d5a4953c0fce1f, then it would be used in either of these ways:
hipmob *supportvc = [[[hipmob alloc] initWithAppID:@"fefed30c17f0409f89d5a4953c0fce1f"] autorelease];
		    
or
hipmob *supportvc = [[[hipmob alloc] initWithAppID:@"fefed30c17f0409f89d5a4953c0fce1f" andTitle:@"Support Chat"] autorelease];
		    

Device ID

Description
The application can provide a device identifier that is passed back to the Hipmob chat network. This device identifier will allow the user to extract chat transcript data associated with this device using the upcoming Hipmob API. The device identifier is treated as an opaque key by the Hipmob chat network: it is not parsed or processed in any way, just stored. If present, it is written out into the transcripts.
Required
Yes
Since:
Version 1.0
Type:
NSString
Usage:
This is simply set if present as demonstrated below:
supportvc.localdeviceid=@"my-magical-device-identifier";

Name

Description
The application can provide the name of the user on the device to the Hipmob chat activity, which is passed back to the Hipmob chat network. This name will be used in the chat conversation with the admin and will be saved to the conversation transcript: the admin can provide more personalized responses with this information. If this is not included the device's name will be used.
Required
No
Since:
Version 1.0
Type:
NSString
Usage:
This is simply set if present as demonstrated below:
supportvc.username=@"my-magical-username";

Email

Description
The application can provide the email address of the user on the device to the Hipmob chat activity, which is passed back to the Hipmob chat network. This email will be used in the chat conversation with the admin and will be saved to the conversation transcript: the admin can provide more personalized responses with this information.
Required
No
Since:
Version 1.0
Type:
NSString
Usage:
This is simply set if present as demonstrated below:
supportvc.email=@"my-magical-email";

Location

Description
The application can provide a generic location of the device to the Hipmob chat activity, which is passed back to the Hipmob chat network. This is based on the locale setting of the users device accessible via the UIDevice object. This location will be used in the chat conversation with the admin and will be saved to the conversation transcript: the admin can provide more personalized responses with this information.

Context

Description
The application can provide context information that is displayed to the admin who accepts the chat. This can be used to indicate where the user came from (if the chat can be launched from multiple places within the app) or what difficulties the user was experiencing (if the chat is launched from a help button or link in the app). The context will be used in the chat conversation with the admin and will be saved to the conversation transcript: the admin can provide more personalized responses with this information. The upcoming Hipmob API will allow searching on specific context strings: this could be used to identify important issues customers are facing.
Required
No
Since:
Version 1.0
Type:
NSString
Usage:
This is simply set if present as demonstrated below:
supportvc.context=@"my-magical-context";

Availability Status

Description
The application includes a colored dot to indicate whether live operators are available or not. This method lets you control the visibility of the availability status.
Required
No
Since:
Version 1.1
Type:
Method
Name:
setAvailabilityStatus
Parameters:
(BOOL)display
Usage:
This is disabled by passing FALSE to the method as demonstrated below:
[supportvc setAvailabilityStatus:FALSE];

Status Messages

Description
The application can customize the notices displayed for various states of the app. These are currently:
  • connecting
  • connected
  • disconnected
  • operatoronline
  • operatoroffline
The messages to be displayed as stored in a dictionary and you can change any of the values of the dictionary to match whatever text you would like to display.
Required
No
Since:
Version 1.0
Type:
NSMutableDictionary
Usage:
This is set the same way any mutable dicationary is set. If you add keys to the dictionary they will be added but will not be used for anything. As we add more keys for various status messages you will be able to access them here.
[supportvc.statusmessages setValue:@"Sorry, no one is here right now. Please leave a message" forKey:@"operatoroffline"]

LocalWebView

Description
This variable is only available on iPhone. This allows you to set whether pushing urls with the #open command open in a separate safari window or in the navigation controller stack.
Default
FALSE
Since:
Version 1.2
Type:
BOOL
Usage:
This can simply be set as demonstrated below:
supportvc.localWebView=TRUE;

PeerDeviceID

Description
This application must provide the peer's device identifier. This is passed back to the Hipmob communication network and is used to route messages to the appropriate device. The device identifier is treated as an opaque key by the Hipmob communication network: it is not parsed or processed in any way, just stored. If present, it is written out into the transcripts.
Required:
YES
Since:
Version 1.3
Type:
NSString
Usage:
Set this variable as part of the hipmob object BEFORE you have the hipmob object appear so that it will be sent to the servers and you will initiate a p2p conversation.
supportvc.peerdeviceid=YOUR_FRIEND_DEVICE_ID
Note Because Hipmob does not parse the provided device identifier or look at it in any other way, the Hipmob communication network will accept the same device identifier for multiple devices. Note that future functionality may depend on uniqueness of the device identifier.

Displayed

Description
This is a read-only variable on the hipmobView that lets the user know if the object is currently being displayed or not.
Since:
Version 1.2
Type:
BOOL (readonly)
Usage:
You can check this variable as demonstrated below:
if(supportvc.displayed){
		      [supportvc.view removeFromSuperView];
		      }else{
		      NSLog(@"No hipmob object being displayed");
		      }

willDismissHipmobView

Description
This optional delegate method can be used to catch when a hipmob chat view is being dismissed in case you need to perform any additional actions.
Required:
No
Since:
Version 1.2
Type:
Delegate Method
Name:
willDismissHipmobView:
Parameters:
(hipmobView*)hipmobObj
Usage:
Implement this in any object you declare as a hipmobViewDelegate
-(void) willDismissHipmobView:(hipmobView *)hipmobView{
			[supportvc release];
			supportvc=nil;
			NSLog(@"Hipmob is being dismissed. Freeing the memory object");
			}

launchURL

Description
This delegate method allows the developer to customize the action when an administrator sends an #open command. The return value (BOOL) will allow the developer to specify whether to display a message that this url is being handled or not.
Required:
No
Since:
Version 1.2
Type:
Method
Name:
launchURL:
Parameters:
(NSString*)urlstring
Usage:
Implement this in any object you declare as a hipmobViewDelegate
-(BOOL)launchURL:(NSString *)urlstring{
			UIViewController *webViewController = [[[UIViewController alloc] init] autorelease];
			
			UIWebView *uiWebView = [[[UIWebView alloc] initWithFrame: CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height)] autorelease];
			[uiWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlstring]]];
			
			[webViewController.view addSubview: uiWebView];

			[self.navigationController pushViewController:webViewController animated:YES];
			return NO;
			}

receivedMessageFromID

Description
Delegate callback that lets you see whenever messages are received from peers that are not the one you are connected to. If a support message is sent this way it is sent with the id "SUPPORT." The return value of this function decides whether a statement is printed on the users message feed that a message was sent to them or not.
Required:
No
Since:
Version 1.3
Type:
Method
Name:
receivedMessageFromID:
Parameters:
(NSString*)senderid
Usage:
Implement this in any object you declare as a hipmobViewDelegate
-(BOOL)receivedMessageFromID:(NSString *)senderid{
			NSLog(@"User with id %@ sent you a message", senderid);
			return TRUE;
			}

View Background Color

Description
This setting allows the background color of the Hipmob view to be modified.
Since:
Version 1.4
Key:
HIPMOB_SETTING_VIEW_BACKGROUND_COLOR
Class:
UIColor
Usage:
Add this key to the NSDictionary passed to the init method:
NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
			[settings setObject:[UIColor purpleColor] forKey:HIPMOB_SETTING_VIEW_BACKGROUND_COLOR];
			hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andSettings:settings] autorelease];
		      

Window Background Color

Description
This setting allows the background color of the Hipmob window to be modified.
Since:
Version 1.4
Key:
HIPMOB_SETTING_WINDOW_BACKGROUND_COLOR
Class:
UIColor
Usage:
Add this key to the NSDictionary passed to the init method:
NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
			[settings setObject:[UIColor purpleColor] forKey:HIPMOB_SETTING_WINDOW_BACKGROUND_COLOR];
			hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andSettings:settings] autorelease];
		      

Window Border Color

Description
This setting allows the border color of the Hipmob window to be modified.
Since:
Version 1.4
Key:
HIPMOB_SETTING_WINDOW_BORDER
Class:
UIColor
Usage:
Add this key to the NSDictionary passed to the init method:
NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
			[settings setObject:[UIColor purpleColor] forKey:HIPMOB_SETTING_WINDOW_BORDER_COLOR];
			hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andSettings:settings] autorelease];
		      

Window Separator Color

Description
This setting allows the color of the separators used in the Hipmob window to be modified.
Since:
Version 1.4
Key:
HIPMOB_SETTING_WINDOW_SEPARATOR_COLOR
Class:
UIColor
Usage:
Add this key to the NSDictionary passed to the init method:
NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
			[settings setObject:[UIColor purpleColor] forKey:HIPMOB_SETTING_WINDOW_SEPARATOR_COLOR];
			hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andSettings:settings] autorelease];
		      

Window Border Width

Description
This setting allows the background color of the Hipmob view to be modified.
Since:
Version 1.4
Key:
HIPMOB_SETTING_WINDOW_BORDER_WIDTH
Class:
NSNumber
Usage:
Add this key to the NSDictionary passed to the init method:
NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
			[settings setObject:[NSNumber numberWithFloat:1.0f] forKey:HIPMOB_SETTING_WINDOW_BORDER_WIDTH];
			hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andSettings:settings] autorelease];
		      

Navigator Background Color

Description
This setting allows the background color of the navigation item in the Hipmob view to be modified.
Since:
Version 1.4
Key:
HIPMOB_SETTING_NAVITAGION_BACKGROUND_COLOR
Class:
UIColor
Usage:
Add this key to the NSDictionary passed to the init method:
NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
			[settings setObject:[UIColor purpleColor] forKey:HIPMOB_SETTING_NAVIGATION_BACKGROUND_COLOR];
			hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andSettings:settings] autorelease];
		      

Toolbar Tint Color

Description
This setting allows the background color of the bottom toolbar in the Hipmob view to be modified.
Since:
Version 1.4
Key:
HIPMOB_SETTING_TOOLBAR_TINT_COLOR
Class:
UIColor
Usage:
Add this key to the NSDictionary passed to the init method:
NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
			[settings setObject:[UIColor purpleColor] forKey:HIPMOB_SETTING_TOOLBAR_TINT_COLOR];
			hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andSettings:settings] autorelease];
		      

Placeholder Text

Description
This setting allows the placeholder text displayed in the Hipmob text entry field to be modified.
Since:
Version 1.4
Key:
HIPMOB_SETTING_TEXT_ENTRY_PLACEHOLDER
Class:
UIColor
Usage:
Add this key to the NSDictionary passed to the init method:
NSMutableDictionary * settings = [NSMutableDicationary dictionaryWithCapacity:5];
			[settings setObject:[UIColor purpleColor] forKey:HIPMOB_SETTING_TEXT_ENTRY_PLACEHOLDER];
			hipmob *supportvc = [[[hipmob alloc] initWithAppID:HIPMOB_KEY andSettings:settings] autorelease];
		      

PSD Files for in-app chat

Description
These files can be modified and renamed to replace the images in your app chat window. This allows for an incredibly deep level of customization. PSD's are attached.
iPhone 5 Design Assets iPhone 4 & 4S Design Assets