注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

Demo体验

Demo体验

场景Demo,开箱即用
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有

环信登录提示 invalid user or password

接入环信的时候,遇到登录的问题。用环信demo注册的用户,在自己注册的appkey中是无法登录的。需要自己去注册的管理后台添加对应IM用户才能登录。在此记录一下,希望对遇到同样问题的朋友有帮助。
接入环信的时候,遇到登录的问题。用环信demo注册的用户,在自己注册的appkey中是无法登录的。需要自己去注册的管理后台添加对应IM用户才能登录。在此记录一下,希望对遇到同样问题的朋友有帮助。

imGeek社区上线现金打赏功能,拥抱共享经济开启单点技术问题众包新模式

(下面是我们PR写的新闻稿,高大上吧)  一提到共享经济必定会提到Uber和Airbnb,这两只巨无霸独角兽的崛起让“共享经济”一词异常火热,作为共享经济最具代表性的两家企业,Uber和Airbnb分别为出租车业和酒店业带来了革命性的改变,也让人们看到了共享...
继续阅读 »
(下面是我们PR写的新闻稿,高大上吧)

 一提到共享经济必定会提到Uber和Airbnb,这两只巨无霸独角兽的崛起让“共享经济”一词异常火热,作为共享经济最具代表性的两家企业,Uber和Airbnb分别为出租车业和酒店业带来了革命性的改变,也让人们看到了共享经济在未来的巨大潜力。共享经济这种新的经济模式并不只会在出租车业和酒店业发挥作用,利用人们业余时间和空间的特点,它几乎可以渗透到各个行业,当然移动开发市场也首当其冲。
 

1449803054986.jpg


偶们imGeek开发者社区(http://www.imgeek.org)已悄然上线现金打赏功能,在所有问题回复的下侧悄然出现了一个“赞赏”图标。这个是imGeek开发者社区在共享经济浪潮中的一次尝试,希望借助开发者的力量帮助开发者,人人为我,我为人人。

“赞赏”功能一经推出,受到了开发者的热烈追捧,同时不少论坛KOL们已经陆续收到不少“赞赏”,少则一元,多则上百元,虽然钱数总额不多,但能激发人类最原始的互助潜能,也是对知识的一种尊重。正如打赏时弹出的“知识价值的认可,源自您的赞赏”,正是开发者之间相互的认可,促进了社区中提出的问题可以得到及时的回复。据观察,imGeek开发者社区上面的提出的问题基本在10分钟以内即可得到回复,一个问题基本可以很快的得到解决。

在共享经济的浪潮中也催生了软件服务行业众包模式。其中,Coding,猿团因为众包分别得到了资本的青睐,开源中国更是凭借众包概念上了新三板。 但笔者认为,软件行业的众包并不是一个新生事物,软件项目的外包失败大多是因为项目发包方过于强势,需求变化频繁,众包并不能真正解决这些问题。

但如果将一个项目分解为一个个技术问题, 通过对单点技术问题进行众包,每次付费的金额少,笔者认为imGeek开发者社区这种运营做法是更易操作的方式。 现在imGeek开发者社区的“赞赏”功能还仅是依赖开发者志愿进行,并不强制,这样的操作既照顾到社区的自发性,也为那些乐于分享的勤恳开发者提供了高于社区荣誉的经济收益。

基于互联网的共享经济目前来看已经大大改变了不少行业的格局,相对传统行业,它们拥有更大的优势:1,更节约的时间。2,更优化的资源配置。3,更灵活的就业。也许不久的将来,imGeek开发者社区将在共享经济和众包的浪潮中趟出一条新路。

据悉,imGeek开发者社区是由环信赞助,截止2015年5月,环信服务了23763个App以及几万开发者,环信的创始团队均是世界著名开源项目的贡献者,运营总监是原开源力量社区的创始人,相信正是由于他们对移动开发者的深度了解,促使imGeek开发者社区将逐步发展成为移动开发者们的核心聚集地。 收起阅读 »

推荐算法和机器学习入门

互联网是什么? 马云说:“很多人还没搞清楚什么是PC互联网的时候,移动互联网来了,我们还没搞清楚移动互联的时候,大数据时代又来了。” 大数据又是什么? 有人说,从庞杂的数据背后挖掘、分析用户的行为习惯和喜好,找出更符合用户“口味”的产品和服务,就是大数据...
继续阅读 »
互联网是什么?

马云说:“很多人还没搞清楚什么是PC互联网的时候,移动互联网来了,我们还没搞清楚移动互联的时候,大数据时代又来了。”

大数据又是什么?

有人说,从庞杂的数据背后挖掘、分析用户的行为习惯和喜好,找出更符合用户“口味”的产品和服务,就是大数据。

且听浙江网新恒天大数据技术负责人李海峰为大家分享的课程。
课程视频:
推荐算法和机器学习入门介绍

<烟波浩渺,算法为王>
<他山之石,可以攻玉> 收起阅读 »

Java实现环信服务器端接口,需要的联系我qq1138789752

本人花了1周实现本测试了目前环信服务端所有的接口,需要的代码克联系我qq1138789752,接口列表如下: import java.io.File; import com.liaozi.imhere.entity.TalkMsg; import com.li...
继续阅读 »
本人花了1周实现本测试了目前环信服务端所有的接口,需要的代码克联系我qq1138789752,接口列表如下:
import java.io.File;
import com.liaozi.imhere.entity.TalkMsg;
import com.liaozi.imhere.entity.TalkNode;
public interface TalkDataService {
    /**
     * 登录环信平台
     * @param username 注册账户
     * @param password 登录密码
     * @param nickname 用户昵称
     * */
    public TalkNode login(String username, String password) throws Exception;
    /**
     * 退出环信平台
     * @param username 注册账户
     * */
    public TalkNode logout(String username) throws Exception;
    /**
     * 添加用户信息(单个)
     * @param username 注册账户
     * @param password 登录密码
     * @param nickname 用户昵称
     * */
    public TalkNode userSave(String username, String password, String nickname) throws Exception;
    /**
     * 添加用户信息(批量)
     * @param username 注册账户
     * @param password 登录密码
     * @param nickname 用户昵称
     * */
    public TalkNode userSave(String[] username, String[] password, String[] nickname) throws Exception;
    /**
     * 删除用户信息(单个)
     * @param username 注册账户
     * */
    public TalkNode userDrop(String username) throws Exception;
    /**
     * 删除用户信息(批量)
     * @param size 当前页数
     * */
    public TalkNode userDrop(Long size) throws Exception;
    /**
     * 启用禁用账户
     * @param username 注册账户
     * */
    public TalkNode userModifyAccess(String username, Boolean access) throws Exception;
    /**
     * 修改用户密码
     * @param username 注册账户
     * @param password 登录密码
     * */
    public TalkNode userModifyPassword(String username, String password) throws Exception;
    /**
     * 修改用户昵称
     * @param username 注册账户
     * @param nickname 用户昵称
     * */
    public TalkNode userModifyNickname(String username, String nickname) throws Exception;
    /**
     * 获取用户信息
     * @param username 注册账户
     * */
    public TalkNode userGet(String username) throws Exception;
    /**
     * 获取用户信息
     * @param size 当前页数
     * @param cursor 当前游标
     * @param start 开始毫秒
     * */
    public TalkNode userList(Long size, String cursor, Long start) throws Exception;
    /**
     * 判断用户状态
     * @param username 注册账户
     * */
    public TalkNode userLine(String username) throws Exception;
    /**
     * 获取所属群组(好友群)
     * @param username 注册账户
     * */
    public TalkNode userGroupList(String username) throws Exception;
    /**
     * 获取所属群组(聊天室)
     * @param username 注册账户
     * */
    public TalkNode userRoomList(String username) throws Exception;
    /**
     * 获取消息数量(离线)
     * @param username 注册账户
     * */
    public TalkNode userMessageCount(String username) throws Exception;
    /**
     * 获取消息状态(离线)
     * @param username 注册账户
     * @param id 消息编号
     * */
    public TalkNode userMessageLine(String username, String id) throws Exception;
    /**
     * 添加好友账户
     * @param username 注册账户
     * @param friend 好友账户
     * */
    public TalkNode friendSave(String username, String friend) throws Exception;
    /**
     * 删除好友账户
     * @param username 注册账户
     * @param friend 好友账户
     * */
    public TalkNode friendDrop(String username, String friend) throws Exception;
    /**
     * 获取好友列表
     * @param username 注册账户
     * */
    public TalkNode friendList(String username) throws Exception;
    /**
     * 添加拦截账户
     * @param username 注册账户
     * @param friend 拦截账户
     * */
    public TalkNode blockSave(String username, String[] friend) throws Exception;
    /**
     * 删除拦截账户
     * @param username 注册账户
     * @param friend 拦截账户
     * */
    public TalkNode blockDrop(String username, String friend) throws Exception;
    /**
     * 获取拦截列表
     * @param username 注册账户
     * */
    public TalkNode blockList(String username) throws Exception;
    /**
     * 添加群组信息
     * @param owner 所属用户
     * @param name 群组名称
     * @param desc 群组描述
     * @param limit 用户上限
     * @param friend 好友账户
     * */
    public TalkNode groupSave(String owner, String name, String desc, Integer limit, String[] friend) throws Exception;
    /**
     * 删除群组信息
     * @param id 群组编号
     * */
    public TalkNode groupDrop(String id) throws Exception;
    /**
     * 修改群组信息
     * @param id 群组编号
     * @param name 群组名称
     * @param desc 群组描述
     * @param limit 用户上限
     * */
    public TalkNode groupModify(String id, String name, String desc, Integer limit) throws Exception;
    /**
     * 修改群组群主
     * @param id 群组编号
     * @param owner 所属用户
     * */
    public TalkNode groupModifyOwner(String id, String owner) throws Exception;
    /**
     * 获取群组信息
     * @param id 群组编号
     * */
    public TalkNode groupGet(String[] id) throws Exception;
    /**
     * 获取群组列表
     * @param size 当前页数
     * @param cursor 当前游标
     * @param start 开始毫秒
     * */
    public TalkNode groupList(Long size, String cursor, Long start) throws Exception;
    /**
     * 添加群组好友(单个)
     * @param id 群组编号
     * @param friend 好友账户
     * */
    public TalkNode groupFriendSave(String id, String friend) throws Exception;
    /**
     * 添加群组好友(批量)
     * @param id 群组编号
     * @param friend 好友账户
     * */
    public TalkNode groupFriendSave(String id, String[] friend) throws Exception;
    /**
     * 删除群组好友(单个)
     * @param id 群组编号
     * @param friend 好友账户
     * */
    public TalkNode groupFriendDrop(String id, String friend) throws Exception;
    /**
     * 删除群组好友(批量)
     * @param id 群组编号
     * @param friend 好友账户
     * */
    public TalkNode groupFriendDrop(String id, String[] friend) throws Exception;
    /**
     * 获取群组好友
     * @param id 群组编号
     * */
    public TalkNode groupFriendList(String id) throws Exception;
    /**
     * 添加群组拦截(单个)
     * @param id 群组编号
     * @param friend 拦截账户
     * */
    public TalkNode groupBlackSave(String id, String friend) throws Exception;
    /**
     * 添加群组拦截(批量)
     * @param id 群组编号
     * @param friend 拦截账户
     * */
    public TalkNode groupBlackSave(String id, String[] friend) throws Exception;
    /**
     * 删除群组拦截(单个)
     * @param id 群组编号
     * @param friend 拦截账户
     * */
    public TalkNode groupBlackDrop(String id, String friend) throws Exception;
    /**
     * 删除群组拦截(批量)
     * @param id 群组编号
     * @param friend 拦截账户
     * */
    public TalkNode groupBlackDrop(String id, String[] friend) throws Exception;
    /**
     * 获取群组拦截
     * @param id 群组编号
     * */
    public TalkNode groupBlackList(String id) throws Exception;
    /**
     * 上传文件数据
     * @param file 文件数据
     * */
    public TalkNode fileUpload(File file) throws Exception;
    /**
     * 下载文件数据
     * @param id 文件编号
     * @param share 分享编号
     * @param thumb 是否缩放
     * @param file 本地文件
     * */
    public void fileDown(String id, String share, Boolean thumb, File file) throws Exception;
    /**
     * 添加消息数据
     * @param data 消息数据
     * */
    public TalkNode messageSave(TalkMsg data) throws Exception;
    /**
     * 获取消息列表
     * @param size 当前页数
     * @param cursor 当前游标
     * @param start 开始毫秒
     * */
    public TalkNode messageList(Long size, String cursor, Long start) throws Exception;
    /**
     * 获取聊天列表
     * @param size 当前页数
     * @param cursor 当前游标
     * @param start 开始毫秒
     * */
    public TalkNode chatList(Long size, String cursor, Long start) throws Exception;
    /**
     * 添加聊天群组
     * @param owner 所属用户
     * @param name 群组名称
     * @param desc 群组描述
     * @param limit 用户上限
     * @param friend 聊天账户
     * */
    public TalkNode roomSave(String owner, String name, String desc, Integer limit, String[] friend) throws Exception;
    /**
     * 修改聊天群组
     * @param id 群组编号
     * @param name 群组名称
     * @param desc 群组描述
     * @param limit 用户上限
     * */
    public TalkNode roomModify(String id, String name, String desc, Integer limit) throws Exception;
    /**
     * 删除聊天群组
     * @param id 群组编号
     * */
    public TalkNode roomDrop(String id) throws Exception;
    /**
     * 获取聊天群组
     * @param id 群组编号
     * */
    public TalkNode roomGet(String id) throws Exception;
    /**
     * 获取聊天群组
     * */
    public TalkNode roomList() throws Exception;
    /**
     * 获取聊天好友(单个)
     * @param id 群组编号
     * @param friend 聊天账户
     * */
    public TalkNode roomFriendSave(String id, String friend) throws Exception;
    /**
     * 获取聊天好友(批量)
     * @param id 群组编号
     * @param friend 聊天账户
     * */
    public TalkNode roomFriendSave(String id, String[] friend) throws Exception;
    /**
     * 删除聊天好友(单个)
     * @param id 群组编号
     * @param friend 聊天账户
     * */
    public TalkNode roomFriendDrop(String id, String friend) throws Exception;
    /**
     * 删除聊天好友(批量)
     * @param id 群组编号
     * @param friend 聊天账户
     * */
    public TalkNode roomFriendDrop(String id, String[] friend) throws Exception;
} 收起阅读 »

imgeek社区上线“活动”板块,求玩环

社区上线“活动”板块,公测中,求玩环   http://www.imgeek.org/activity/   花了偶们一个月的时间,改版后的社区活动模块开始公测,相对于以前的和传统的活动报名网站,有了几个改进: 1. 开放演讲报名 2. 开放投票,你的投票将...
继续阅读 »
社区上线“活动”板块,公测中,求玩环
 
http://www.imgeek.org/activity/
 
花了偶们一个月的时间,改版后的社区活动模块开始公测,相对于以前的和传统的活动报名网站,有了几个改进:
1. 开放演讲报名
2. 开放投票,你的投票将决定演讲顺序
3. 未注册用户也可以报名
4. 活动中的提问和社区相结合,在活动中的提问将进入社区问题流,更多的人将会看到你的问题 
5. 开放合作伙伴和志愿者申请通道,并得到展示  
 
  收起阅读 »

php和nodejs服务端代码示例参考

https://github.com/easemob/emchat-server-examples   这个github上的php和nodejs已经是最新代码,找不到的小伙伴也可以从这里下载查看,有什么问题欢迎随时交流,我QQ:1003432453,邮箱:fe...
继续阅读 »
https://github.com/easemob/emchat-server-examples   这个github上的php和nodejs已经是最新代码,找不到的小伙伴也可以从这里下载查看,有什么问题欢迎随时交流,我QQ:1003432453,邮箱:fengpei@easemob.com。 收起阅读 »

新版AndroidStudio以及新版sdk开发环境创建新项目可能会出现的一些错误问题

首先说下我这边开发的环境: AndroidStudio version:1.4.1 jdk version:1.7.0 SDKTools version:24.4.x Build-tools version:23.0.1 Compile SDK version...
继续阅读 »
首先说下我这边开发的环境:
AndroidStudio version:1.4.1
jdk version:1.7.0
SDKTools version:24.4.x
Build-tools version:23.0.1
Compile SDK version:API 22 (5.1)
Minimum SDK version:API 15(4.0.3)
Gradle version:2.4

连接地址:
AndroidStudio等工具地址:
Android官网:http://developer.android.com/
国内收集: http://www.androiddevtools.cn/
gradle v2.4下载(as有时自动下载不成功,所以要自己下载):https://downloads.gradle.org/distributions/gradle-2.4-all.zip
关于gradle首次创建项目卡住的问题可以看下这篇文章AndroidStudio 新建及clone项目关于gradle出现的问题"

创建项目
这里使用AndroidStudio创建一个空的项目就OK了,
打开AndroidStudio 点击Start a new Android Studio project创建新项目

当创建成功后发现会出现了一些问题
问题一
Error:A problem occurred configuring project ':app'.
> Could not download junit.jar (junit:junit:4.12)
> Could not get resource 'https://jcenter.bintray.com/junit/junit/4.12/junit-4.12.jar'.
> Could not GET 'https://jcenter.bintray.com/junit/junit/4.12/junit-4.12.jar'.
> peer not authenticated
Error:A problem occurred configuring project ':app'.
> Could not download hamcrest-core.jar (org.hamcrest:hamcrest-core:1.3): No cached version available for offline mode

这个是因为最新的创建项目会使用junit库来进行代码测试,在下载这个库的内容的时候发现他引用了hamcrest这个框架,不过国内下载这个框架的这个接啊日报hamcrest-core.jar不成功,所以会报这个错误,可以把build.gradle里引用的junit给删除或注释
问题二
D:\develop\android\workspace\studio\EaseUICustomer\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.1.0\res\values-v23\values-v23.xml
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.
Error:Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\develop\android\android_sdk\build-tools\build-tools-23.0.1\aapt.exe'' finished with non-zero exit value 1

这个是因为创建项目默认使用appcompat-v7包23.0.1版本,这个版本好像有问题,手动把这个版本号改下就ok了,改成22.+然后同步 就ok
 
同步发表到个人博客:http://blog.melove.net 收起阅读 »

AndroidStudio一个工程内查看多个项目的实现

现在已经有很多人开始使用AndroidStudio开始开发Android了,但是这货有一点儿不好,一个界面只能打开一个项目,当我们在开发自己的项目时,如果想像eclipse查看别的demo的代码或者功能,只能再另外打开一个Window新开项目,其实呢Andro...
继续阅读 »
现在已经有很多人开始使用AndroidStudio开始开发Android了,但是这货有一点儿不好,一个界面只能打开一个项目,当我们在开发自己的项目时,如果想像eclipse查看别的demo的代码或者功能,只能再另外打开一个Window新开项目,其实呢AndroidStudio可以在一个项目中导入多个Module,这里以导入环信最新版的几个demo来实现在AndroidStudi中查看多个项目;
首先导入3.0的项目,3.0的demo引入了EaseUI库,在导入AndroidStudio的时候会以Module的形式自动导入EaseUI,EaseUI库中放着simpledemo这个小demo,我们先把它剪切出来,和其他的demo放在一起,等下我们就在一个AndroidStudio项目中导入环信的这些全部demo
首先导入3.0Demo:

photo000.png



因为要导入所有的demo所以给导入的项目重新命名下

photo001.png




photo002.png



导入完成后就可以开始导入其他项目了,不过想在当前项目中导入其他项目要选择Import Module的方式,下边以导入环信老版本的demo为例

photo003.png




photo004.png




OK 导入成功,可以看到项目中有三个Module了 easeUI easeUIDemo oldDemo,其中oldDemo就是刚才导入的老版本的demo,只是改了个名字

photo005.png



然后看下Run/Debug configuration 可以发现这里有两个配置项,就说明当前工程内有两个可运行的Android项目

photo006.png



下边再导入那个简单的easeuidemo看下
导入之后看下Project Structure 可以看到当前项目有四个Module,一个EaseUI library库,其他三个是Android app项目easeUIDemo 和easeUISimpleDemo引用了EaseUI库,oldDemo是老版本直接集成的demo

photo007.png



可以根据这里的选择来运行不同的module,并且可以在一个工程内查看所有的代码

photo008.png



同步发表到个人博客:http://melove.net
文章地址:http://blog.melove.net/lzan13/develops/android-develop/androidstudio-project-module-941.html 收起阅读 »

环信移动客服云产品使用指南抢先看

问产品经理拿到新鲜出炉带着热气的产品使用指南。    这个不是最终版,正式版本以这里的为准: http://docs.easemob.com/    要提前学习的同学可以下载啦!   免费注册试用环信移动客服云-->    
问产品经理拿到新鲜出炉带着热气的产品使用指南。 
 
这个不是最终版,正式版本以这里的为准: http://docs.easemob.com/ 
 
要提前学习的同学可以下载啦!   免费注册试用环信移动客服云-->
 
 

关于环信新版EaseUI库导入AndroidStudio问题

环信大牛最新封装了一个供开发者直接使用的UI库 EaseUI,这个可以让大家快速的进行集成环信的sdk进行实现聊天,官方也说了老版本的demo不会进行维护,重点维护这个EaseUI,但是在自己导入的时候有时会有些问题,这里用1.4版本的AndroidStudi...
继续阅读 »
环信大牛最新封装了一个供开发者直接使用的UI库 EaseUI,这个可以让大家快速的进行集成环信的sdk进行实现聊天,官方也说了老版本的demo不会进行维护,重点维护这个EaseUI,但是在自己导入的时候有时会有些问题,这里用1.4版本的AndroidStudio导入3.0的demo来说明下;
首先就是打开as导入项目

tupian010.png


我喜欢给他改个名字EaseUIDemo

tupian011.png


导入完成
我这边导入时没有问题的,有时导入demo或者我们自己创建的项目 然后导入easeui库,并加入到自己的项目中去的时候可能会出现下边这样的错误 ,出现问题的原因的大致因为EaseUI默认引入的v4包的版本20.0.0,但是大家的开发环境不同,sdk版本以及编译器和support库版本不同,会出现错误;

tupian012.png



解决办法:这个时候就去点击项目设置,选中EaseUI把sdk版本设置成和build.gradle里一样的版本就行了,如果过低,建议更新sdk,还不行,就把自己的项目的sdk版本和EaseUI都设置成一样,v4库也设置成一样



tupian013.png


设置了之后,要记得同步gradle 1 or 2 方式都可以

tupian014.png


如果是自己创建的项目想在as中引入EaseUI库,可以点击File->New->Import Module选项

tupian009.png


同步发表到个人博客:http://melove.net 收起阅读 »

关于新版AndroidStudio导入环信Demo的一些注意事项

这里是以AndroidStudio v1.4版本为例 新版AndroidStudio已经可以直接导入eclipse的项目了,具体步骤看下边(会的飘过) 有一点要注意:as导入eclipse的项目,如果项目有引入library项目,并且library项目路径正...
继续阅读 »
这里是以AndroidStudio v1.4版本为例

新版AndroidStudio已经可以直接导入eclipse的项目了,具体步骤看下边(会的飘过)
有一点要注意:as导入eclipse的项目,如果项目有引入library项目,并且library项目路径正确,as在导入eclipse的项目的同时会自动导入library为module

启动as 进入起始页,有些设置的是启动直接打开项目了,可以在设置里先设置下:


tupian000.png



设置了之后,在启动就是进入到启动界面了:
选择Import project(Eclipse ADT, Gradle, etc)选项开始选择导入eclipse创建的Android项目

tupian001.png



然后选择项目路径,这里以最新版环信demo2.2.4为例


注意:环信的ChatDemoUI这个demo里边因为研发的同事为了照顾老版本的as使用者,已经用eclipse生成了build.gradle文件,所以如果要导入新版as 请把build.gradle删除


tupian002.png


 




tupian003.png


然后选择项目目的路径(相当于工作空间,带上项目目录名)

tupian004.png


提示目录不存在,不存在就对了  ok

tupian005.png



继续默认 Finish

tupian006.png



然后就是等待,这个一般有时会卡住,因为有时需要下载gradle的包,会很慢很慢,解决办法就是自己去gradle官网去下载gradle包,至于怎么解决看下这篇:关于环信新版EaseUI库导入AndroidStudio问题

tupian007.png



导入成功,打开项目就是这样了

tupian008.png


下边多说一句,就是如果自己创建的项目想要引用EaseUI这个库(不只是这个库,其他任何的library库),可以直接在项目界面,点击菜单栏File->New->Import Module 然后选择easeui路径就ok

tupian009.png


同步发表到个人博客:http://melove.net 收起阅读 »

新增“代码”区

收录了基于环信SDK开发的开源项目,大家写代码的时候就有更多参考了。   如果你们什么好的项目,特别是基于环信SDK开发的,并且愿意开源分享出来,请在http://www.imgeek.org/page/code后跟贴回复,我们将收录在的“代码”区,让你的成果...
继续阅读 »
收录了基于环信SDK开发的开源项目,大家写代码的时候就有更多参考了。
 
如果你们什么好的项目,特别是基于环信SDK开发的,并且愿意开源分享出来,请在http://www.imgeek.org/page/code后跟贴回复,我们将收录在的“代码”区,让你的成果与更多人分享。
  收起阅读 »

ASN 和 PB 的编码效率比较

作者:王纯业 ,转自http://blog.easemob.com/ ### 第一个例子 http://martin.kleppmann.com/2012/12/05/schema-evolution-in-avro-protocol-buffers-thr...
继续阅读 »

作者:王纯业 ,转自http://blog.easemob.com/

### 第一个例子
http://martin.kleppmann.com/2012/12/05/schema-evolution-in-avro-protocol-buffers-thrift.html 是一个很好的比较例子。
我类似的做了一个 ASN1 的结构
```
Person DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
  Person ::= SEQUENCE {
    username PrintableString,
    favouritenumber INTEGER,
    interests SEQUENCE OF PrintableString
  }
END
```
用下面的方法编译
```
erlc -I. -bper Person.asn
erl
> c("Person").
{ok,'Person'}
> {ok, B} = 'Person':encode('Person', #'Person'{username = "Martin", favouritenumber = 1337, interests = ["daydreaming", "hacking"]}).
{ok,<<6,77,97,114,116,105,110,2,5,57,2,11,100,97,121,100,
      114,101,97,109,105,110,103,7,104,97,99,...>>}
> byte_size(B).
31
```
这个例子里面,ASN1 用了 31 bytes ,protobuf 用了 33 bytes, Avro 用了
32 bytes。 这不是一个公平的比较,对于大量使用小数据结构的时候,例如,
enum command type 之类的,ASN1 可以节省更多的 bytes 。
### 第二个例子
这是 protobuf 的定义。
```
package dummy;
message S {
  optional int32 a =1;
  optional bool b =2;
  optional int32 c =3;
  optional D   d =4;
}
message D {
  optional bool d1 = 1;
  optional bool d2 = 2;
}
```
用 erlang 编译 参考 [https://github.com/tomas-abrahamsson/gpb]()
```
> deps/gpb/bin/protoc-erl -I. -o-erl src -o-hrl include s1.proto
> erl -sname a@localhost
(a@localhost)1> R = #'S'{a=1,b=true,c=2, d=#'D'{d1 = true, d2 = true} }.
#'S'{a =1,b = true,c = 2,d = #'D'{d1 = true,d2 = true}}
(sync@localhost)2> s1:encode_msg(R).
<<8,1,16,1,24,2,34,4,8,1,16,1>>
(a@localhost)14> byte_size(s1:encode_msg(R)).
12
```
可以看到 protobuf 用了 12 个字节。
ASN1 的例子,使用  PER 编码方式。
```
Dummy DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
  Dummy ::= SEQUENCE {
   a INTEGER (0..7),
   b BOOLEAN,
   c INTEGER (0..3),
   d SEQUENCE {
      d1 BOOLEAN,
      d2 BOOLEAN }}
END
```
```
> erlc -I. -bper Dummy.asn
> erl
(a@localhost)1> 'Dummy':encode('Dummy', #'Dummy'{ a = 1, b = true, c = 2, d = #'Dummy_d'{d1= true, d2 = true }}).
{ok,<<";">>}
```
protobuf 用了  12 个字节, ASN1 用了 1 个字节。同样,这也不是一个公平的比较。
很难做出公平的比较。但是可以说在大多数情况下 ASNPER 的编码是更加节省带宽的。
### 为什么 ASN1 PER 的编码效率比 PB 的高
1. ASN1 PER 是面向 bit 的编码方式,PB 是面向字节的编码方式。
2. PB 中 message 都是可以扩展的,ASN1 中只有使用  `...` 关键字的类型,才是可以扩展的。
3. PB 中的整数很简单,都是可以扩展到 64 位,ASN1 中有更加灵活(复杂) 的整数扩展方式。
2. PB 中的 `required`, `optional`, `oneof`, 和 `extensions` 的特性,对编码没有影响。例如,就算是 `required` 的字段,编码的时候,也是需要 tag 。
3. ASN1 PER 对很多关键字都是敏感的。例如
   1. `required` 的字段不会添加表明类型的 tag
   2. `required` 的字段按顺序编码。
4. tag 在 PER 中不做编码。
5. by default, every message is extensible in PB. Instread, ASN1 extensibility should be explicitly specified.
4. PB 中支持的整数类型不支持 subtype, 而 ASN1 PER 中的整数支持 subtype , 可以实现高效编码。
### 使用 ASN1 的优点
1. 编码紧凑,节省带宽。这是为什么几乎所有的 2G/3G/4G/5G 的无线通信协议都使用 ASN1 的原因之一。
2. ASN1 久经考验,asn1c 的项目已经十多年了,依然活跃开发。 Erlang 因为是通信公司创造的,语言内嵌 ASN 的支持。 Erlang 没有默认支持 PB 需要使用第三方开发库。
3. ASN1 支持 XER (XML) ,可以方便的调试。
4. wireshark 本身对 ASN1 的支持很好。
### 使用 ASN1 PER 的风险
1. ASN1 本身很复杂。ASN1 的学习成本高
2. PER 编码很复杂。可以用700行 C 代码实现 PB 的编解码,但实现 PER 编码不行。
3. ASN1 对语言的支持不多,似乎只有  C/Erlang 有比较好的使用。由于历史原因,通信领域几乎没有其他语言可供选择。
  收起阅读 »

【视频学习】环信视频教程

Android_EaseUI 视频地址   Android_SDK 视频地址   OC_EaseUI 视频地址   OC_SDK 视频地址   Swift_EaseUI 视频地址   Swift_SDK 视频地址

40bb20ca7b0921d79257f7bb786dd9bb.png


Android_EaseUI 视频地址
 
Android_SDK 视频地址
 
OC_EaseUI 视频地址
 
OC_SDK 视频地址
 
Swift_EaseUI 视频地址
 
Swift_SDK 视频地址

【社区福利,Apache Con赠票,原价249元】 Apache年度大会

各位亲,凡imgeek社区注册会员,回复“我要赠票”,即可免费获得于本周六周日在北京中科院举办的Apache年度大会(价值249 RMB).   我们将通过后台私信给你免费参会码,你拿到这个码即可通过大会官网免费报名.    仅限前50位回复者!先到先...
继续阅读 »
各位亲,凡imgeek社区注册会员,回复“我要赠票”,即可免费获得于本周六周日在北京中科院举办的Apache年度大会(价值249 RMB).
 
我们将通过后台私信给你免费参会码,你拿到这个码即可通过大会官网免费报名. 
 
仅限前50位回复者!先到先得 

 
大会官网:http://www.kaiyuanshe.cn/index.php?option=com_content&view=article&id=84
 

北京海淀区中关村东路80号,中科院大学管理学院教学楼  
2015年10月24日 - 10月25日 ,本周六周日

 

QQ截图20151021120338.jpg




QQ截图20151021120345.jpg




QQ截图20151021120351.jpg




QQ截图20151021120401.jpg




QQ截图20151021120413.jpg




QQ截图20151021120422.jpg




QQ截图20151021120435.jpg




QQ截图20151021120443.jpg




QQ截图20151021120452.jpg




QQ截图20151021120459.jpg




QQ截图20151021120508.jpg




QQ截图20151021120514.jpg




QQ截图20151021120522.jpg


 
优惠码使用方法:
 
购票链接:https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fwww.huodongxing.com%2fevent%2f9291887966700&data=01%7c01%7cemchen%40064d.mgd.microsoft.com%7c80feb925ffc5494b5f6b08d2d904a16c%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=3CRU6CWIo7rf5WIX7h7Xqk9e%2bn9pQfOkWW3HSN%2f5Dcg%3d
 
优惠码使用说明:

1 电脑操作(手机操作会有优惠码失效的情况)。请滚动鼠标,出现图示悬浮框后,点击“我要参加”;

页面会自动跳转到购票区域,点击票种 “第一天+第二天(不含大数据金牌训练营)”;


QQ截图20151021145546.jpg


 
 
2. 页面会自动跳转到“请填写报名表单”。请把鼠标网上移动,页面会露出“请输入优惠码”的
使用框;


QQ截图20151021145554.jpg


 
 
3. 输入优惠码点击“使用”,票面价格会显示“0”元;点击票种价格后的“我要参加”按钮,之后按照实际情况填写报名表单提交即可。
 


QQ截图20151021145601.jpg


 
 
  收起阅读 »

Android 开源项目源码解析(Volley、UIL、Dagger、EventBus、xUtils 等分析)

目前包括: Android 开源项目第一篇——个性化控件(View)篇   包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollV...
继续阅读 »
目前包括:

Android 开源项目第一篇——个性化控件(View)篇
  包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、FlipView、ColorPickView、GraphView、UI Style、其他
Android 开源项目第二篇——工具库篇
  包括依赖注入、图片缓存、网络请求、数据库 ORM 工具包、Android 公共库、高版本向低版本兼容库、多媒体、事件总线、传感器、安全、插件化、文件、其他
Android 开源项目第三篇——优秀项目篇
  比较有意思的完整的 Android 项目
Android 开源项目第四篇——开发及测试工具篇
  包括开发效率工具、开发自测相关、测试工具、开发及编译环境、其他
Android 开源项目第五篇——优秀个人和团体篇
  乐于分享并且有一些很不错的开源项目的个人和组织,包括 JakeWharton、Chris Banes、Koushik Dutta 等大牛
 
详细原文在github上面可以找到:  https://github.com/Trinea/android-open-project#%E7%AC%AC%E5%9B%9B%E9%83%A8%E5%88%86-%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7 收起阅读 »

Android 开发工具之Codota——搜索最好的Android 代码

  Find Great Code Examples Our crawler extracts coding patterns from a vast number of code projects. Search here for the best c...
继续阅读 »
 


Find Great Code Examples Our crawler extracts coding patterns from a vast number of code projects. Search here for the best code examples from over 7 million sources


上面是Codota 官方介绍的最好的代码实例,我们的抓取工具从大量的代码项目中抓取了大量的代码模式, 你可以从这里搜索超过七百万精品代码实例;Codota 的特性

的确,正如codota 官方所说,的确是精品,他的搜索源,不仅只有Github,而且还有知名博客和开发者网站,让你搜索一个东西,不用在找上半天;

除了搜索功能,首页的下方还罗列比较流行的类库,还提供保存代码的CodeBox,同时还提供了Chrome 插件和Android Studio 插件,最后通过Google,Github,Facebook 任意一个授权登录即可使用;

而且当你点击搜索的结果(Java class)的时候,右侧会显示UML 视图,而且左边的代码如果点击会有高亮现实,而且还会显示Doc,并提供了API Doc 的链接。


related-scrshot.png


 
  收起阅读 »

【抽奖结果】环信移动客服平台,你了解多少?

精美奖品蓄势待“发”,请中奖用户尽快通过私信将奖品寄送地址发给我。包括收件人姓名、手机号、收件地址。 中奖名单 ------------------ 芳心随波儿动! 哈巴狗 华千骨 Y。Y。Y lhauspicious marvin 成续缘 缘来就是你 ...
继续阅读 »
精美奖品蓄势待“发”,请中奖用户尽快通过私信将奖品寄送地址发给我。包括收件人姓名、手机号、收件地址。



中奖名单
------------------
芳心随波儿动!
哈巴狗
华千骨
Y。Y。Y
lhauspicious
marvin
成续缘
缘来就是你
sunshine
东风玖哥
thinking in life
裨b补阙漏
fengsidai
sandpiper
帝乙岩
乘龙再现
月落乌啼

我的世界你不懂
我是一只鱼 收起阅读 »

新增“帮助中心”

我们整理了一些已经解决的问题,做成了“帮助中心”,http://www.imgeek.org/help/   方便大家查询,及时获得答案
我们整理了一些已经解决的问题,做成了“帮助中心”,http://www.imgeek.org/help/  
方便大家查询,及时获得答案

【视频】普及下环信即时通讯云

 播放地址:http://yuntv.letv.com/bcloud.swf?uu=b133c59dd0&vu=1a538fb53a&pu=adfb3ced5e&auto_play=1&gpcflag=1&lang=zh_CN
 播放地址:http://yuntv.letv.com/bcloud.swf?uu=b133c59dd0&vu=1a538fb53a&pu=adfb3ced5e&auto_play=1&gpcflag=1&lang=zh_CN

ios推送字符长度有没有限制?

跟普通消息一样,30kb以内。另外,自定义的字段可以全部显示。
跟普通消息一样,30kb以内。另外,自定义的字段可以全部显示。

Web端怎么发送消息的?

老版本web端是靠http轮循发送消息的,也就说在一定时间向服务器发送http请求,服务器也在一定时间内发送消息到浏览器。这个时间是可以设置的。在新版本里面加了websocket 长连接,是支持 https 的。
老版本web端是靠http轮循发送消息的,也就说在一定时间向服务器发送http请求,服务器也在一定时间内发送消息到浏览器。这个时间是可以设置的。在新版本里面加了websocket 长连接,是支持 https 的。

环信的表情可以换成自己的吗?

可以更换,环信SDK提供的是一个聊天通道,demo提供的只是一个模板,ui方面的东西完全可以按照自己的要求来处理 demo是使用映射,具体可以参考下demo的 SmileUtils 类
可以更换,环信SDK提供的是一个聊天通道,demo提供的只是一个模板,ui方面的东西完全可以按照自己的要求来处理
demo是使用映射,具体可以参考下demo的 SmileUtils 类

可在WEB页面使用环信的即时通讯工具吗?

支持WebIM。即基于浏览器的IM,类似微信网页版。WebIM是完全开源的,非常方便开发者或集成商把WebIM集成到自己的web页面中,完全替换成自己的风格。beta版已经上线可以先行体验,测试环信WebIM请访问 http://webim.easemob.c...
继续阅读 »
支持WebIM。即基于浏览器的IM,类似微信网页版。WebIM是完全开源的,非常方便开发者或集成商把WebIM集成到自己的web页面中,完全替换成自己的风格。beta版已经上线可以先行体验,测试环信WebIM请访问 http://webim.easemob.com。 登录可以使用环信Demo的账号和密码(见http://www.easemob.com/downloads), 环信WebIM快速入门文档请见:http://docs.easemob.com/doku.php?id=start:400webimintegration 收起阅读 »

logininfo有时候为空,是怎么回事?

没有登陆或者登录不成功。
没有登陆或者登录不成功。

显示时间能不能设置成间隔10分钟显示一次 ?

可以的,这个完全是在UI上来显示,可以按照自己设定时间来显示
可以的,这个完全是在UI上来显示,可以按照自己设定时间来显示

环信sdk用到的那个位置定位有偏差吧?

sdk只是传递上层的经纬坐标,定位精度是相应的地图软件决定的。
sdk只是传递上层的经纬坐标,定位精度是相应的地图软件决定的。

聊天的内容储存在哪,用户是否能够保存和备份?

聊天的内容存储在环信的服务器上,同时用户本地也会保存一份,是SDK自动存储的。
聊天的内容存储在环信的服务器上,同时用户本地也会保存一份,是SDK自动存储的。

一个客服系统,是否可以建立多个关联,是否可以关联不同的AppKey的关联?

一个客服系统下可以建立多个关联,也可以关联不同的appkey的IM用户。 详细查看 app接入 关联相关 文档 http://docs.easemob.com/doku.php?id=cs:300visitoraccess:10nativeapp
一个客服系统下可以建立多个关联,也可以关联不同的appkey的IM用户。 详细查看 app接入 关联相关 文档 http://docs.easemob.com/doku.php?id=cs:300visitoraccess:10nativeapp

客服的接入人数有什么用?

接待人数是指系统给客户自动分配会话的最大人数,超过此人数以后,系统不再给客服分配会话。
接待人数是指系统给客户自动分配会话的最大人数,超过此人数以后,系统不再给客服分配会话。

用户后台关联的时候总是未启动,用户名和密码是没问题的,该如何处理?

检查下clientid,appkey,clientsecret这三个参数前后是否有空格,检查下用户名密码和appkey,clientId,secret是否有错误,先测试下这两种情况,再有其他原因就需要看后台日志了。
检查下clientid,appkey,clientsecret这三个参数前后是否有空格,检查下用户名密码和appkey,clientId,secret是否有错误,先测试下这两种情况,再有其他原因就需要看后台日志了。

web端的那个表情文件在哪里?[(;] 后面 有一个value 那个value 代表的是 二进制流还是 图片路径 ?

使用的是base64编码,在http://webim.easemob.com/jquery-1.11.1.js var emotionPicData 。
使用的是base64编码,在http://webim.easemob.com/jquery-1.11.1.js var emotionPicData 。

管理后台当前登录账号禁止操作是什么情况?

只有一个管理员,不能移除,org下如果不止一个管理员,当前登陆的管理员可以移除另外一个管理员,但是不能移除自己。
只有一个管理员,不能移除,org下如果不止一个管理员,当前登陆的管理员可以移除另外一个管理员,但是不能移除自己。

环信的实时消息旁路接口是什么?

消息实时回调。环信server会把消息主动回调给用户的服务器。
消息实时回调。环信server会把消息主动回调给用户的服务器。

发送消息的时候,没有网络,环信会不会像QQ那样有个自己去持续请求的时间呢?

环信有提供持续请求时间,如果过了设定的时间,才会返回发送失败的回调
环信有提供持续请求时间,如果过了设定的时间,才会返回发送失败的回调

[[EaseMob sharedInstance].chatManager setIsAutoLoginEnabled:YES]; 这个应该写到哪里呢?

只有您登录成功后设置这个才会生效,否则都不会有效,所以建议您在登录成功后设置。
只有您登录成功后设置这个才会生效,否则都不会有效,所以建议您在登录成功后设置。

可以随意的加入或退出群组吗?

群组分四种 1.公开群(不需要群主同意) 2.公开群(申请,需要群主同意) 3.私有群(只能群主加人) 4.私有群(允许群主和群成员加人)   只有第一种允许用户随意进出。   注: 公开群是可以通过环信SDK的api来搜索到的群 私有群是不能通过环信SDKa...
继续阅读 »
群组分四种
1.公开群(不需要群主同意)
2.公开群(申请,需要群主同意)
3.私有群(只能群主加人)
4.私有群(允许群主和群成员加人)
 
只有第一种允许用户随意进出。
 
注:
公开群是可以通过环信SDK的api来搜索到的群
私有群是不能通过环信SDKapi搜索到的群 收起阅读 »

【回顾】环信宣布B轮融资前的预告片

 视频地址http://player.letvcdn.com/lc06_p/201611/29/10/51/11/newplayer/bcloud.swf?uu=b133c59dd0&vu=486ccfd400&pu=adfb3ced5e&auto_play=...
继续阅读 »
 视频地址http://player.letvcdn.com/lc06_p/201611/29/10/51/11/newplayer/bcloud.swf?uu=b133c59dd0&vu=486ccfd400&pu=adfb3ced5e&auto_play=1&gpcflag=1&lang=zh_CN 收起阅读 »

为什么用户名密码在demo上登录成功的,但是在自己app上登录就说用户名和密码错误呢?

检查是否 是在自己appkey下注册的账号,不同的appkey下注册的账号是分离开的,不互通
检查是否 是在自己appkey下注册的账号,不同的appkey下注册的账号是分离开的,不互通

环信的表情可以换成app的吗?

可以,目前SDK中使用的表情都是字符串匹配得来的。在消息传递过程中,发的就是字符串,当客户端需要展示的时候,转换成对应的图片即可。
可以,目前SDK中使用的表情都是字符串匹配得来的。在消息传递过程中,发的就是字符串,当客户端需要展示的时候,转换成对应的图片即可。

环信有什么技术上的优势和特点?

1、高并发下的可靠性,稳定性:环信是国内第一家即时通讯云平台,也是国内最大的即时通讯云平台。截至2014年12月已通过SDK达到1亿注册ID用户的覆盖率。这些注册ID用户是通过13763+家APP在使用环信集成的IM功能。过千万用户的超级APP就有十多家。典型...
继续阅读 »
1、高并发下的可靠性,稳定性:环信是国内第一家即时通讯云平台,也是国内最大的即时通讯云平台。截至2014年12月已通过SDK达到1亿注册ID用户的覆盖率。这些注册ID用户是通过13763+家APP在使用环信集成的IM功能。过千万用户的超级APP就有十多家。典型用户包括海豚浏览器(一个亿用户),蜻蜓fm(数千万用户),汽车之家-车友会(数千万用户),节操精选(500万用户),看动漫(数百万用户),哈图(200万用户),熊猫公交(200万用户)等。所以环信平台的可靠性,稳定性是经受了千万级真实用户的实践考验的。2、开放性:环信的几位创始人都是重度的开源软件参与者。几位创始人作为commiiter(核心开发者)身份参与过的开源软件就有10几个,包括大家都比较熟 悉的Hibernate, JBoss jBPM, Apache CXF, Eclipse STP, Gradle等。创始人的基因决定了公司的文化。环信的目标一直是做一款真正“开发者为开发者打造的软件”,一款最开放的即时通讯平台。这 也是为什么环信开源了所有的应用和UI层面的源代码,包括单聊,群聊页面,通讯录页面,通话历史记录页面。环信以后还会开源更多,比如阅后即焚,比如公共账号,比如录音变音。环信会以身作则,带头来做开源。环信的长期目标是和开发者一起打造最开放的开源社交技术社区,大家可以一起在社区里分享自己做过的各种社交模块,模板乃至成品应用。只有这样,才能真正降低开发者做社交的成本。3、专注:这个行业里有的公司既做IVR,呼叫中心,也做短信接入,voip。IM 只是他们产品线的一个部分。而环信就只做一个IM,别的什么都不做。即使这样,环信也觉得把IM这一件事做好做深做透,本身就是一件很不容易的事了。以后还有很多的工作要做。现在的第三方开发者服务市场,经过推送,云存储,统计分析等产品的培育,开发者们也都变得越来越成熟起来。他们在选择一个第三方开发 者服务时,他们知道要选择一个在这个领域做得最好最精的服务,而不是去选择一个一站式服务厂商。环信给所有开发者的承诺就是环信只做IM ,是这个领域的No.1 收起阅读 »

【视频】普及下环信移动客服产品

 视频地址:http://player.letvcdn.com/lc06_p/201611/29/10/51/11/newplayer/bcloud.swf?uu=b133c59dd0&vu=2d669a3371&pu=adfb3ced5e&auto_play...
继续阅读 »
 视频地址:http://player.letvcdn.com/lc06_p/201611/29/10/51/11/newplayer/bcloud.swf?uu=b133c59dd0&vu=2d669a3371&pu=adfb3ced5e&auto_play=1&gpcflag=1&lang=zh_CN
 
 
环信移动客服,专为手机APP打造的智能客服平台, 你用起来了没?  收起阅读 »

关于所谓”XcodeGhost”的澄清

iOS
源于XcodeGhost作者的github, https://github.com/XcodeGhostSource/XcodeGhost    "XcodeGhost" Source 关于所谓”XcodeGhost”的澄清 首先,我为XcodeGhost事...
继续阅读 »
源于XcodeGhost作者的github, https://github.com/XcodeGhostSource/XcodeGhost 
 
"XcodeGhost" Source 关于所谓”XcodeGhost”的澄清

首先,我为XcodeGhost事件给大家带来的困惑致歉。XcodeGhost源于我自己的实验,没有任何威胁性行为,详情见源代码:https://github.com/XcodeGhostSource/XcodeGhost

所谓的XcodeGhost实际是苦逼iOS开发者的一次意外发现:修改Xcode编译配置文本可以加载指定的代码文件,于是我写下上述附件中的代码去尝试,并上传到自己的网盘中。

在代码中获取的全部数据实际为基本的app信息:应用名、应用版本号、系统版本号、语言、国家名、开发者符号、app安装时间、设备名称、设备类型。除此之外,没有获取任何其他数据。需要郑重说明的是:出于私心,我在代码加入了广告功能,希望将来可以推广自己的应用(有心人可以比对附件源代码做校验)。但实际上,从开始到最终关闭服务器,我并未使用过广告功能。而在10天前,我已主动关闭服务器,并删除所有数据,更不会对任何人有任何影响。

愿谣言止于真相,所谓的"XcodeGhost",以前是一次错误的实验,以后只是彻底死亡的代码而已。

需要强调的是,XcodeGhost不会影响任何App的使用,更不会获取隐私数据,仅仅是一段已经死亡的代码。

再次真诚的致歉,愿大家周末愉快 收起阅读 »

苹果清除感染 XCodeGhost 的应用

iOS
苹果周日称它正从其应用商店内移除感染XcodeGhost的应用。恶意代码XcodeGhost通过第三方下载的Xcode编译器嵌入到了数百款合法应用中,其中包括流行的中国应用如微信和嘀嘀打车。在这之前,App Store只发现过5款恶意应用。苹果发言人 Chri...
继续阅读 »
苹果周日称它正从其应用商店内移除感染XcodeGhost的应用。恶意代码XcodeGhost通过第三方下载的Xcode编译器嵌入到了数百款合法应用中,其中包括流行的中国应用如微信和嘀嘀打车。在这之前,App Store只发现过5款恶意应用。苹果发言人 Christine Monaghan表示,他们正在与开发者合作确保他们使用官方版本的Xcode 去构建他们的应用。安全公司的研究人员担心其他人可能会模仿XcodeGhost的做法。苹果没有透露究竟有多少应用被发现感染了XcodeGhost。 iOS开发者从百度云盘等第三方下载Xcode的一个原因被认为是官网的下载速度太慢,而影响官网下载速度的因素除了CDN外就是防火长城和出口流量控制了。
源自solidot.org 收起阅读 »

要发透传信息,是不是先要把推送证书配置好 ?

透传消息的特点是不会发送apns和存db,所以您使用透传时不需要设置证书也可以使用。
透传消息的特点是不会发送apns和存db,所以您使用透传时不需要设置证书也可以使用。

回调接口的返回值都是固定格式,callId,accept,reason,security,怎么会报返回值过长的错误呢?

一般返回值过长是因为用户的回调接口出问题了,比如出现了错误页面,环信这边得到了一个错误页面,就会超长。
一般返回值过长是因为用户的回调接口出问题了,比如出现了错误页面,环信这边得到了一个错误页面,就会超长。