||04-12-2005 02:56 PM
Development Guidelines for Chat Software Developers
As an instant messaging and BlackBerry expert, let me make these suggestions. All BlackBerry chat software developers should seriously consider these. I am anxious for a more reliable and stable chat software program, and competition really helps, so this is a listing of tips for all BlackBerry chat software developers.
Also check out these links:
- My BlackBerry FAQ
BlackBerry Instant Messaging FAQ
- Overview of instant messengers on BlackBerry.
Configuring Internet On BlackBerry
- Finally run chat without needing BES/MDS!
Important Features specific to BlackBerry (And found in most of your competition)
- One of the configurable alert modes should also include "Jump Immediately To Chat" or similiar on incoming messages (ala WebMessenger by default, or when configuring VeriChat to do this). For many people, this is less intrusive than a popup message, because they can simply hit the Esc button to go back to where they was doing, if they don't want to chat. (and continue typing my BlackBerry email before VeriChat interrupted me). Ideally, this should be the default alerting method on a BlackBerry, because Esc conveniently exits this much more conveniently than a popup message. (i.e. fullscreen chat pops up instead of a dialog message)
- At least 1 second delay between audible/tactile alert (vibrate/ring) and visual alert (such as popup or Jump Immediately To Chat). This is I can stop typing my email before messenger interrupts me. That way, I don't accidentally keep typing when the chat software pops up.
- Single socket operation or Jabber backend operation (i.e. multiplex all chat networks over one socket), to save bandwidth and battery power. This is necessary on BlackBerry, because opening multiple sockets on the BlackBerry has had a lot of problems with other betas. Even the VeriChat people are rewriting the VeriChat software to work in single-socket operation (between the BlackBerry and the mobile chat server such as Jabber)
- A single multitask keypress, that switches to the next session containing unread messages. (Similiar to Alt+Enter in VeriChat). This makes it more convenient to conduct more than 1 chat conversation simultaneously on BlackBerry. If the software uses a tabbed interface, this could become the hotkey to switch between tabs.
- Make hitting Esc while inside chat, forces the chat software into the background, so I can run other software, etc. (Same as WebMessenger and VeriChat)
- Make sure that chat windows don't become slow when they are full of text after a 20 minute conversation. VeriChat becomes unusually slow, for example.
- Unread messages indicator in all screens. Basically, if I am inside a chat, I'd like to know there are unread messages from other people, using an indicator at the top of the screen. (The Status line at the bottom is good for brief alerts, but there should be a persistent indicator at the top of the screen everywhere in your software, in case my BlackBerry is unattended)
- Configurable alert modes:
- No alerts (silent mode)
- Alert, but don't jump into chat
- Alert, and then jump immediately into chat (1 second later)
- Alert, and then display popup message (1 second later)
- One menu item to put yourself into Away mode on ALL chat networks. This is great for doing this, right before stepping into a car, for example.
- Automatic reconnect after disconnection. This is good for poor reception, or when the BlackBerry is turned off. (Good test cases: Turn off your BlackBerry while your chat software is running. About 20 minutes later, turn back the BlackBerry on. Does your chat software automatically reconnect? Also, try turning off the radio instead of turning off BlackBerry)
- Queueing of incoming and outgoing messages during reconnection between BlackBerry and the chat server. You really do not want dropped messages during poor reception (VeriChat has this problem since its queueing is not perfect, but WebMessenger solves this problem by queueing). You can set a 15 minute limit for queued messages, and automatically display a message "[Automated] Your message ____ could not be transmitted in the last 15 minutes because the BlackBerry user was out of reception or disconnected." to the other user, if the BlackBerry does not come back online within 15 minutes.
- Message transmission indicator. I want to know that the message that I just typed, is currently not yet transmitted because of unsuccessful reception. (Similiar to the "transmitting email" clock-logo indicator before checkmarks in BlackBerry email). WebMessenger has this feature, although VeriChat does not. You can implement this in any manner (indicator at top, or an icon next to the message that dissappears after successful transmission)
- Custom predefined messages. This allows me to transmit things like "I'm currently driving, please message me later", just by using the thumbwheel alone.
- User friendly. The two current champions are VeriChat and WebMessenger, but it is not recommended to copy these too identically because of copyright and other issues. Make your own niche market!
- Contact list update transmissions should be efficiently optimized (online, offline, away, back), so that if there's a lot of logging on and off, it doesn't gobble too much battery power. One method is to make contact list updates infrequent (only once every 15 minutes) everytime the chat software is running in the background, and only once every 15 seconds everytime the chat software is running in the foreground. By grouping all the update packets intermittently for an unattended BlackBerry idling, battery consumption is saved.
- Optional polled operation mode, instead of continuous operation, so chat software can run in the background 24/7 constantly online in an "always-on" state on higher-power networks.
- GPRS BlackBerries can have constantly-open sockets for approximately 75 to 100 hours nonstop (GSM/GPRS is very efficient in this regards). I successfully ran VeriChat nonstop for 75 hours on a single battery charge on model 7280! (7280's are famous for long battery life). With the screen turned on all the time! (backlight off)
- CDMA/iDEN BlackBerries only can last between 8 and 16 hours for a nonstop-open socket (this is due to constant battery usage during open sockets). Specifically, the five BlackBerry models 6750, 7750, 7250, 7520, 7510, have lots of battery-life problems with chat software.
As a result, you should consider polled operation for CDMA BlackBerries if possible, to make the battery life last longer. Polled operation is also useful for networks that have unusually short timeouts for continuous TCP/IP connection (i.e. less than 30 second idle timeout). Basically, you can have your software check the chat server for incoming messages every few minutes (and also do a contact list update at the same time). Whenever an incoming message occurs, immediately keep the socket open, so that chat is realtime. Later, when it has been 10 minutes since the last incoming message, go back into polled operation. (Don't do this for GSM/GPRS BlackBerries, it's unnecessary to reestablish a socket connection). Alternatively, you could try to use SMS signalling or another method.
- Did you know that chat is now possible without needing BES? However, sometimes users need to configure their BlackBerry which can be very tricky. Therefore, in the Help of your software, include APN tips for T-Mobile, Cingular, and Rogers users at the minimum. (You could make this a configuration menu item, that automatically tells the user what APN to fill at Options->TCP->APN). Please contact me for permission if you want to use any material from my www.BerryFAQ.com articles.
I am a deaf guy and always run chat software 24/7 always-on, and I use chat software very heavily on my BlackBerry. As a result, I give a very heavy torture test to chat software. As a developer, I make these suggestions in public, because all the above features are found in BlackBerry chat software -- but not in a SINGLE
client. It would be a dream to have all the above, in the same software program!