仿微信基本功能。

基于XMPPserver的即时通信以及交友client。

----第一期代码的功能例如以下---- 



    1.新用户注冊 



    2.登陆并连接XMPPserver 握手 保持在线 



    2.查找最新注冊用户:(下拉刷新 上拉翻页。做的比較匆忙,没操作提示) 



    3.点击某个用户就可以对他发送消息(聊天记录下一期更新) 



    4.首页显示收到的和发送的全部消息(排序和分组下一期更新) 



    ----第二期更新内容---- 



    1.修复了注冊延时时间,加入了切换账号功能,修复了输入框适配问题 



    2.微信页面和聊天页面界面已基本重做 。首页消息按联系人分组按时间逆序显示。聊天气泡有待优化,收发消息所有採用 NSNotifaction 不用操心消息发了页面不刷新。自己主动滚到最新一条。

键盘监听效果更加友好,採用TableViewInset来错位。 



    3.加入好友功能,加入完后能够在好友列表查看到,若是在是注冊的太早要翻非常久,或者新注冊用户刷新不出来,能够通过webview直接加入,可是需到控制台查看互相的ID 



    4.User对象和Message对象採用FMDB+类java的Dao模式用静态方法固化,而且有个开发人员自己写的对象to字典、字典to对象的两个超好用的方法,大家值得一看!

5.删除了XMPPManager单例中的一些废话和临时用不着的内容。加入了非常多凝视。大家能够细细品读。

----第三期更新内容---- 



    1. 增加离线图片的发送接收支持; 



    2. 优化了输入框。并以自己定义输入面板的形式实现了shareMore(分享很多其它); 



    3. 发送图片的两种模式均以实现 ,通过http上传至server再转发URL(已凝视掉),通过base64码直接编码图片再解码,均支持离线收发。 



    因为作者没有做屏幕适配,所以请在Retina 4-inch模拟器或者iPhone5中执行代码。 



    ----第四期代码的功能例如以下---- 



    1. 修复绝大部分bug 



    2. ios7体验更佳 



    3. 图片/文字畅聊不闪退 



    4. 支持按昵称模糊搜索。找到朋友更easy 



    5. 修复了域名丢失引起的连接失败问题,如今server24小时确保能连接 



    6. 更准确的提示信息。更好的用户体验 



    PS: 1~3期的用户数据已清除,如需尝试请又一次注冊 



     



    作者说:这次给大家带来的demo我已经写好了server端,也配置好了openfireserver,大家假设想执行的话先确定server是否开启(APIport8080,openfireport5225)。ping一下 www.hcios.com 假设未开启请QQ,一般开启时间为9:00~18:00



    预计网上再也找不到比我写的这个更好的XMPP Demo了,上传此demo的目的为给很多其它的朋友了解即时通讯技术,在您看的爽的同一时候,请同意我要求您不要用此demo以商业用途传播 ,谢谢。

源代码下载:http://code.662p.com/view/5849.html

<ignore_js_op> 

<ignore_js_op> 

<ignore_js_op>

具体说明:http://ios.662p.com/thread-1073-1-1.html

仿ios版微信应用源代码的更多相关文章

  1. 仿PC版微信的练手项目(可实时通讯)

    仿PC版微信的DEMO 本项目是由一个仿PC版微信的vue前端项目,和一个使用leancloud进行数据存储的.提供WebSocket的node后端项目构成. 本项目使用的技术栈:vue + vue- ...

  2. 腾讯微信被怼,iOS版微信不能打赏了

    2017年4月19日,估计很多有着大量粉丝的微信自媒体作者会感到很不爽,因为他们的苹果粉丝再也无法很爽快地.肆意.任性地打赏他们了,按目前iphone手机的占有率,估计打赏率会掉一半以上. 据微信派微 ...

  3. iOS版微信6.5.21发布 适配iPhone X

    昨日,iOS版微信迎来v6.5.21正式版发布,本次升级主要适配iPhone X,在聊天中查找聊天内容时,可以查找交易消息.可以给聊天中的消息设置日期提醒.上一个正式版v6.5.16发布于9月13日, ...

  4. 微信团队分享:iOS版微信的高性能通用key-value组件技术实践

    本文来自微信开发团队guoling的技术分享. 1.前言 本文要分享的是iOS版微信内部正在推广和使用的一个高性能通用key-value 组件的技术实践过程,该组件在微信内部被命名为MMKV(以下简称 ...

  5. 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?

    本文来自微信开发团队yanyang的技术分享. 1.引言 相信大家都遇到过一段特殊文本可以让iOS设备所有app闪退的经历.前段时间大年初一,又出现某个印度语字符引起iOS11系统奔溃,所幸iOS版微 ...

  6. 微信团队原创分享:iOS版微信的内存监控系统技术实践

    本文来自微信开发团队yangyang的技术分享. 一.前言 FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀.对用户而言,表现跟crash一样. ...

  7. 微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结

    1.引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了. 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟.如今用公司配的 17 年款 27-inch iMac 编译要接近半小时:偶 ...

  8. 解决alert在ios版微信中显示url的问题(重写alert)

    为了解决alert在ios版微信中显示url的问题 window.alert = function(name){ var iframe = document.createElement("I ...

  9. react-native自定义Modal模态框|仿ios、微信弹窗RN版

    前序 纵观每个优质项目,无论web端还是native原生应用开发,弹窗都是不可忽视的一环,能很大程度上直接决定用户体验.如:微信.支付宝.ios都有很成熟的一套弹窗UI展示场景. 最近一直沉迷在rea ...

随机推荐

  1. 基于RAF的一个小动画框

    RAF也即是requestAnimationFrame,之前的动画都是基于setTimeout写的,所以为了性能方面的考虑,开始使用requestAnimationFrame写动画. function ...

  2. Windows Phone 8初学者开发—第20部分:录制Wav音频文件

    原文 Windows Phone 8初学者开发—第20部分:录制Wav音频文件 原文地址:http://channel9.msdn.com/Series/Windows-Phone-8-Develop ...

  3. JVM调优总结(十一)-反思

    垃圾回收的悖论 所谓“成也萧何败萧何”.Java的垃圾回收确实带来了很多好处,为开发带来了便利.但是在一些高性能.高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈.目前JDK的垃圾回收算法,始终 ...

  4. UVALive 6584 Escape (Regionals 2013 >> Europe - Central)

    题目 给出一棵树,每个节点有一个怪物或血药,遇到怪物必须打,打完后扣掉一定的血量. 一开始英雄的血量为\(0\),当血量小于\(0\)时就挂了. 给出英雄的起点和终点,问能否成功到达终点. 算法 这题 ...

  5. Java 螺纹第三版 第三章数据同步 读书笔记

    多线程间共享数据问题 一.Synchronizedkeyword      atomic一词与"原子"无关,它以前被觉得是物质的最小的单元,不能再被拆解成更小的部分.      当 ...

  6. Android XML解析器的问题

    最近在项目中遇到了一个解析XML的问题,我们是用android自带的DOM解析器来解析XML的,但发现了一个android的问题,那就是在2.3的SDK上面,无法解析像<, >, 等字符串 ...

  7. Oracle数据库索引使用及索引失效总结

    容易引起oracle索引失效的原因很多: 1.在索引列上使用函数.如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了. 2.新建的表还没来得及生成统计信息,分析 ...

  8. How to Create Dump File for Applications

    使用WinDBG这个工具,可以在应用程序异常终止或者无响应时获取它的尸体,以用来解剖研究. Creating Dump File      在Vista环境中抓取Dump文件很方便,在task man ...

  9. Cocos2D-X学习笔记 3 从一个场景切换到还有一个场景

    工厂方法一般写法 StartLayer * StartLayer::create() { StartLayer *sl = new StartLayer(); sl->init(); sl-&g ...

  10. Android 它们的定义View视图

    创建一个新视图将满足我们独特UI需求. 本文介绍的发展将指南针罗盘接口使用UI,通过继承View定义自己的视图类工具,为了深入了解自己的自定义视图. 实现效果图: 源码: 布局文件activity_m ...