developing cell phone web pages

 

why mobile phones?

have you checked your web server logs for cell phone activity lately?
Have you thought of catering to cell phone users and wondered how you can do this?
I only have a little knowledge on the subject (I have no books), but what I have learned from logs and tutorials on WAP I will share.

parsing web logs

you should use unix-style tools (grep, gzip, bzip2) for this if you have them.

  1. go into the web server control panel and set the web server to save your web logs monthly on the server and not to delete them if you have lots of space.
  2. wait for the logs to trickle in after a month or two.
  3. download the raw web logs from your web server's control panel, or ftp them (faster) into a separate directory, maybe called logs?. Try to ignore the FTP logs!
  4. try using gzip -d *.gz, bzip2 -d *.bz2 or your favorite unzip utility to unzip those raw web logs. the .gz or .bz2 extension should be gone now.
  5. grep " /wap/? " * or regexp search for  /wap/?  should give you all the entries with /wap/ and /wap (the ? makes the previous character / optional), and the space before and after the /wap/? are important. you may get different phones to study and still a lot of googlebot. also try grep " /xhtml/? " * or regular expression search for  /xhtml/?  - what you are searching for is the HTTP GET command string that tells the server to get a page, and specifically what directory is being accessed. also try  /imode/?  if you are in Japan and using C-HTML.

ALTERNATIVE TO GREP: If you don't have UNIX tools like grep, get a programmer's editor that has regexp/regular expression search capabilities that can handle large files, such as The Semware Editor (TSE32) $$, or Eclipse (free, multi-module, and all-encompassing development CASE tool), or Notepad++ (free) also works (don't know about large files) and is free and it is also simpler (windows only). I highly recommend buying TSE. I use it practically every day, and the licensing allows it to used on 1 machine at a time (keep installation on a cd? very handy for computer repair work!).
Dreamweaver's regexp capabilities are broken (I tested it and reported the bugs) and won't be fixed for several major revisions - think CS7 (approximately). Why? because nobody "complains about it" to the Adobe Developers. Beings it's driven by JavaScript, it's not the most efficient language on the planet for processing 62MB logs (and that's for a hardly known site). meaning, it's really slow on a dual-core 2.8GHz machine and it's not multithreaded according to the number of cores/processors!

the order phones request directories in:

cell phones currently look in the following directories for web site index pages. and in these orders.
"GET /robots.txt HTTP/1.0" 200 773 "-" "Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )" "GET / HTTP/1.0" 200 8698 "-" "Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )" "GET /m/ HTTP/1.0" 404 - "-" "Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )"
"GET /mobi/ HTTP/1.0" 404 - "-" "Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )"
"GET /mobile/ HTTP/1.0" 404 - "-" "Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )"
"GET /wap/ HTTP/1.0" 404 - "-" "Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )"
"GET /imode/ HTTP/1.0" 404 - "-" "Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )"
"GET /xhtml/ HTTP/1.0" 404 - "-" "Nokia6680/1.0 ((4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (for mobile crawler) )"

Also, take a look at the logs for this phone. "GET /robots.txt HTTP/1.0" 200 773 "-" "Nokia6682/2.0 (3.01.1) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)"
"GET /mob/ HTTP/1.0" 404 - "-" "Nokia6682/2.0 (3.01.1) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)"
"GET /wap/ HTTP/1.0" 200 1946 "-" "Nokia6682/2.0 (3.01.1) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)"
"GET /wml/ HTTP/1.0" 404 - "-" "Nokia6682/2.0 (3.01.1) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)"
"GET /xhtml/ HTTP/1.0" 404 - "-" "Nokia6682/2.0 (3.01.1) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)"
"GET /mobile/ HTTP/1.0" 404 - "-" "Nokia6682/2.0 (3.01.1) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.0 (compatible;YahooSeeker/M1A1-R2D2; http://help.yahoo.com/help/us/ysearch/crawling/crawling-01.html)"

or this phone:
"GET /wap/ HTTP/1.1" 200 1651 "-" "Nokia2760/2.0 (03.62) Profile/MIDP-2.1 Configuration/CLDC-1.1 UP.Link/6.5.0.0.06.5.0.0.06.5.0.0.0"

iPhone 4.2.1

"GET / HTTP/1.1" 200 23672 "-" "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5"
"GET /favicon.ico HTTP/1.1" 200 9326 "-" "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5"
"GET /fun/4x4-magic-square-solver.html HTTP/1.1" 200 109522 "http://www.google.com/" "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5"

or this Japanese phone:
"GET /wap HTTP/1.1" 301 430 "-" "DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"
"GET /wap/ HTTP/1.1" 200 1651 "-" "DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"

or googlebot (the search engine web crawler). - I think it's googlebot.
"GET /wap HTTP/1.1" 301 329 "-" "Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)" "GET /wap/ HTTP/1.1" 200 1946 "-" "Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"

however, some phones only look in /wap/ and same with googlebot (googlebot seems to only look in /wap/ from what I have seen in the logs). see the following log entry.
"GET /wap/ HTTP/1.1" 200 1651 "-" "Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"
"GET /wap HTTP/1.1" 301 430 "-" "DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"
"GET /wap/ HTTP/1.1" 200 1651 "-" "DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"

Notice that you are going to get different results with different phones. but all in all, they all will work if you put your pages in the /wap/ directory.

how to read a log entry

"GET /wap HTTP/1.1" is an HTTP 1.1 protocol request [as opposed to HTTP 1.0] (this does not mean HTML 1.1!) to retrieve the page /wap which really results in the web server responding by taking the empty directory request and serving up index.wml or index.php (I am not sure which order).

The number after that is the HTTP status (response) code. see wikipedia article on HTTP Status Codes. the next number is the size in bytes I think. the long complicated string in quotes is the phone model+OS version(s) and browser type in perens.

format of pages

format can be XHTML (color) on a few phones, OR WML (b&w WAP XML) always. If it is in WML and you want to use images, images must be in wbmp 1-bit b&w format (Stucki and other forms of dithering can only help you here if you are trying to achieve grayscale). Please note that images should probably fit on the screen and should probably be small. modern browsers may not have this problem, however.

SCREEN SIZE: consider a browser screen to be a minimum of about 25x9 characters I think. I have an old Nokia 6010 which has an even smaller browser I am sure (10x4?).

tutorials for building web pages

here are the W3 schools tutorials on WML and XHTML and HTML. you *might* be allowed to use CSS with XHTML. in this case, here is the tutorial on CSS. some cautions on xhtml here. If you were in Japan, your cell phone would be using imode and you could use C-HTML. HTML is also used. I get this information from this page, which is a cell phone web browser emulator.

sitemaps

mobile [phone] sitemaps for web sites for google search engine submission

new standards
9/25/2011 mobile web
new title for mobile web document standards
old standards
this is partially what I have documented here on this page in the log examples.
9/25/2011 WAP WBXML
WAP is an older standard, replaced with mobile web.
WAP is an older standard, replaced with mobile web.
WAP is an older standard, replaced with mobile web.
WAP is an older standard, replaced with mobile web. wireless BMP image/picture spec, it's black or white.
WAP is an older standard, replaced with mobile web. WMLScript spec. it's the scripting language on the phone. don't think of it like javascript, because its use and syntax are nothing like...
WAP is an older standard, replaced with mobile web. WMLScript libraries spec. it's the scripting language on the phone. don't think of it like javascript, because its use and syntax are nothing like...
mobile phone sdk's (if you want to develop apps)
10/3/2011. $99/year. it was $300 one-time, but now I guess they are milking the developers for all they are worth via support fees.
10/7/2011 formerly Palm. confusing array of choices, nothing looks like cell phone development to me. a maze of fancified HP names. I suggest giving them a call and ask for "agent" or press "0".
10/3/2011
10/3/2011
windows 7/8 app hub free, but may require the $800 Visual Studio compiler.
10/3/2011 I think it's built into Visual Studio 2010 Professional or better. you may be able to choose "ARM" for your CPU type if this is the case. I don't know what cpu type the phone in question uses. I don't know if there is specifically an app store yet for windows 7 or 8 apps, but if there is, someone contact me with a url or tell me how you get to it (pasting in the reference to this page would also help save me a lot of searching, thanks). also I need to know the windows 7 developer page's URL. I can't find it. microsoft hid it this time for some unknown reason.