分享:自己开发的ITeye手机客户端(附源码)

看到论坛里有童鞋在问ITeye官方怎么没有手机版的客户端,于是我花时间自己搞了一个,这样看帖就方便了。
客户端集成了ITeye的资讯,论坛,博客的相关内容,支持Android和iPhone手机。










客户端我放到百度网盘上了,点此下载: http://pan.baidu.com/s/1Jhm3


客户端我是在iMAG移动应用开发平台开发的,基于iMAG移动中间件技术。
用中间件开发的好处是开发一次Android和iPhone就都搞定了,而且开发比较简单,会点儿HTML和Javascript就行了。
iMAG的原理是把xml文件翻译成原生代码来执行,因此性能和原生应用差不多,同时因为封装得比较好, 开发很简单,比PhoneGap之类的要好得多。


关于如何用iMAG中间件来开发移动应用,有兴趣的同学可以去iMAG的官网看看: http://www.imagapp.com

这里附上登录页面的源码
<?xml version="1.0" encoding="utf-8"?>
<imag>
    <script>
    <![CDATA[ 
        var authenticity_token;
        
        function isOnline(html) {
            if (html && (html.indexOf('class="welcome">欢迎') != -1)) {
            	return true;    
            } else {
                return false;
            }
        }
        
        function login() {
            var dlg = $page.waiting('用户登录|正在登录系统...');
        	var username = $('username').value;
        	var password = $('password').value;
            $http.post('http://xiaote.iteye.com/login', {                  
        			name: username, 
                    password: password,
                    authenticity_token: authenticity_token,
                    remember_me: '1',
                    button: '登 录'
            	}, function(data) {
				dlg.close();
                if (isOnline(data)) {
        			hint('登录成功');
            		var storage = $phone.localStorage();
        			storage.setItem('login_online', '1');
        			storage.setItem('login_username', username);
        			storage.setItem('login_password', password);
                    storage.setItem('login_token', authenticity_token);
        			var regex = /<a\s+id="notifications_count"\s+href="\S+">([^<]+)<\/a>[^收]+收件箱\(([0-9]+)\)/gm;
        			var group = regex.exec(data);
                	if (group != null) {
        				storage.setItem('login_message_count', group[1]);
        				storage.setItem('login_email_count', group[2]);
        			}
        			$page.close();
                } else {
        			hint('登录名称或密码错误,请重新登录');
            		var storage = $phone.localStorage();
        			storage.removeItem('login_online');
        			storage.removeItem('login_username');
        			storage.removeItem('login_password');
                }
            },  function(error) {
                if (error == 'timeout') {
                    hint('连接服务器超时,请重试');
                } else if (error == '401') {
                    alert('您所在的IP地址对ITeye网站访问过于频繁,请您稍后再试或到网站上填写验证码,谢谢!');
                }
            });
        }
        
        $page.onload = function() {
        	var dlg = $page.waiting('请稍后|正在加载..');    
            $http.get('http://xiaote.iteye.com/login', function(data) {
                var regex = /<input\s+name="authenticity_token"\s+type="hidden"\s+value="(\S+)"\s*\/>/mg;
                var group = regex.exec(data);
                if (group != null) {
                    dlg.close();
                    authenticity_token = group[1];
                   	var storage = $phone.localStorage();
                } else {
                    $http.get('http://www.iteye.com/logout', function(data) {
                    	dlg.close();
                        var storage = $phone.localStorage();
                        storage.removeItem('login_online');
                        storage.removeItem('login_username');
                        storage.removeItem('login_password');
                        storage.removeItem('login_message_count');
                        storage.removeItem('login_email_count');
                    });
                }
            },  function(error) {
                if (error == 'timeout') {
                    hint('连接服务器超时,请重试');
                } else if (error == '401') {
                    alert('您所在的IP地址对ITeye网站访问过于频繁,请您稍后再试或到网站上填写验证码,谢谢!');
                }
            });
        }
    ]]>
    </script>
    <page>
        <title style="background:gradient(#6293BB);">
            <center>
                <label>用户登录</label>
            </center>
        </title>
        <content style="background:white">
            <form action="login.xml" onsubmit="login();return false">
                <row style="padding:20">
                    <radios name="">
                        <item value="iteye" checked="checked">ITeye账号</item>
                        <item value="csdn">csdn账号</item>
                    </radios>
                </row>
                <list type="group" style="margin:10 20 20 20">
                    <item style="col-width:70,*">
                        <col>
                            <row><icon src="username.png"/><label style="margin-left:10">账号</label></row>
                        </col>
                        <col>
                            <row><input type="text" id="username" name="username" style="background:null"  placeholder="用户名或邮箱" /></row>
                        </col>
                    </item>
                    <item style="col-width:70,*">
                        <col>
                            <row><icon src="password.png"/><label style="margin-left:10">密码</label></row>
                        </col>
                        <col>
                            <row><input type="password" id="password" name="passowrd" style="background:null"/></row>
                        </col>
                    </item>
                </list>
                <input type="submit" style="background:loginbutton.png,loginbutton_pressed.png;margin:10 30;height:45" value="登录"/>
                <validation inputName="username">
                    <presence errorMessage="请输入账号"/>
                </validation>
                <validation inputName="password">
                    <presence errorMessage="请输入密码"/>
                </validation>
            </form>
        </content>
    </page>
</imag>




完整的客户端源码我在iMAG官网论坛里有分享:
http://bbs.imagapp.com
http://bbs.imagapp.com/forum.php?mod=viewthread&tid=65

http://www.iteye.com/topic/1132280



猜你喜欢

转载自xiaote.iteye.com/blog/1958408
今日推荐