常见问题

服务端


服务器端能支撑多大在线用户?产品的性能怎么样?

云信是一个提供高效可靠通讯云服务的平台,支持上亿用户量级的产品,系统架构保证弹性可扩展,并支持接入产品动态扩容。


关于我们的数据在云信上是否安全?

在云信上数据的传输和存储均有私有协议加密,存储的数据安全可靠。


我的用户都在国外,请问访问速度怎么样?

在国外的用户可以通过我们在AWS的云主机连通服务,云信在国外多地均有部署服务器,服务连通时优先选择最近的服务器以保证访问速度。


登录中的token和我的帐号密码是什么关系,我如何维护token?

token是产品应用与云信平台鉴权的凭证,帐号密码则属于第三方产品应用帐号体系的范畴,两者之间存在的映射关系需要由应用的后台服务维护;我们的推荐做法是应用在用户第一次接入云信平台时通过云信后台接口为用户创建帐号和token,并将该组帐号和token与应用的帐号体系关联;后续访问云信平台时均需要用到该token,token的更新可以通过云信的服务器接口实现,更新策略可以由应用按照自己的安全策略决定。


为什么我不能通过客户端sdk创建账号,必须要通过服务端创建?

云信的账号体系和应用的账号体系是一个业务绑定的关系,创建账号在应用服务器进行可以有效控制账号的创建行为,任何应用的客户端都存在被破解的风险,如果直接通过客户端就可以创建云信账号可能会使您的应用出现被盗刷账号的情况。可能友商提供类似的客户端接口,使您在开发的时候节省了几行代码,但是为您的应用安全埋下了风险的种子。


云信的账号能不能删除,accid可不可以就是我业务系统的账号?

云信的账号是不允许删除的,但是如果您不想使用这个账号,可以通过服务端接口将账号禁用。我们不禁止开发者直接将业务系统的uid或account作为云信的accid来注册,但是我们不推荐这么做。我们推荐开发者在创建云信账号时使用随机字串等与应用业务无强关联的字串作为云信accid,再在应用自己的服务器端维护业务uid与云信accid的关联关系。


我有上百万的存量用户账号,你们能提供批量导账号的方法吗?

云信的收费方式和应用接入的用户量直接相关,对于任何应用的账号接入,我们推荐遵从“按需创建”的原则。您的上百万账号中可能存在相当比例的僵尸用户或非活跃用户,在迁入云信时直接全量导入对您是一种不必须要的开销。您可以在用户第一次触发使用云信的IM行为时检查该用户的云信是否创建了accid,如未创建则后台自动创建再登陆,这种方式会使您的用户只有在必要的时候才会创建云信的账号,同时在云信中创建的用户都是有效的活跃用户。虽然这种方式会让您在云信中的注册用户量下降,但是帮你节省了支付给云信的费用,作为有态度的服务提供方,我们还是将最佳实践方式推荐给您。


我通过server端接口注册的账号会不会出现在我的管理后台呢?

通过server端注册的帐号不会出现在管理后台。


server端发消息例子里面的md5是什么?

Alt text 这个md5是根据文件内容,如图片、语音等,用Md5加密算法计算


接入


如何接入你们的平台?集成云信的大概流程是怎样?

接入我们的平台只需要四个步骤即可, 第一步,注册成为网易云信开发者 第二步,创建应用 第三步,用户体系集成 第四步,下载SDK并集成 详细可参见新手接入


用云信开发即时通讯是必须要用你们的服务器和数据库吗?

不需要。网易云信的集成,通过在客户端集成SDK的形式来连接网易云信的云端服务。应用本身的业务逻辑和实际部署,还是跟传统开发完全一样,由开发团队自己维护部署即可。


如何实现第三方通讯云服务到云信的平滑迁移?


AppKey从哪获得?

注册并激活云信开发者帐号后,登录云信管理后台,创建应用后在“APP Key”页面得到。详情参见APPKey信息


怎么创建用户?

测试应用可以在注册开发者帐号后登录管理后台创建测试用户,也可以参照开发手册中Server文档的创建账号接口来创建用户。线上应用只能通过接口创建用户,可查看接口说明


多端互踢的机制是什么样?什么时候会收到被踢的通知?

云信支持最基本的三种互踢策略:


为什么我不能通过客户端sdk创建账号,必须要通过服务端创建?

云信的账号体系和应用的账号体系是一个业务绑定的关系,通过应用服务器才能创建账号可以有效控制账号的创建行为,任何应用的客户端都存在被破解的风险,如果直接通过客户端就可以创建云信账号可能会使您的应用出现被盗刷账号的情况(可能友商提供类似的客户端接口,使您在开发时节省了几行代码,但是为您的应用安全埋下了风险的种子);


数据加密和压缩等问题

PC: 与服务器通讯的和本地缓存的所有文本数据都有压缩和加密。
iOS: 本地聊天数据只有表名(即会话名)加密,图片消息默认压缩为jpeg,压缩质量参数0.5(这个可以上层自由配置),视频音频均不压缩。和服务器通信的文本数据都有压缩和加密。
WEB: 只存储文本数据,不存储图片、音视频(所以就没有数据压缩)。数据不加密,浏览器自己有同源限制(安全限制)。
Android: Android本地聊天数据不加密,图片消息(图片与文件一样上传)不压缩,视频音频不压缩。和服务器通信的文本数据都有压缩和加密。 各端均不限制收发消息频率


如何集成云信账号体系

你的用户在客户端注册到您的服务器,您的服务器保存了这个账号,再调用我们服务端注册云信ID的接口生成云信ID和token,这个时候将用户注册的账号和云信ID绑定,用户登陆的时候就先登陆他注册的账号,到您的服务器拿到绑定的云信ID和token去客户端登陆云信。这里有两套账户体系


Demo


demo登录失败怎么解决?

demo的帐号是登录云信管理后台在云信Demo应用下的帐号管理页面上创建的。请确认已经正确创建了demo帐号,并在demo客户端上登录时,使用了该demo帐号所对应的正确token。如果是自己编译打包的开发者,请确认并未修改源码包中的appkey配置。


如何快速基于Demo源码开发自己的应用 ?


修改了demo的appkey,用注册的账号登录显示302密码错误 ?

DEMO 中登录采用对密码进行 MD5 操作,来模拟 从APP 服务器获取 Token 的流程。而对于用户自己注册的 APP,则不需要这个流程,直接传入云信管理后台创建的帐号密码即可。但不建议您直接将用户的帐号密码等暴露到云信服务中(尽管我们对业务方存储在云信的数据采用安全可靠的保护措施,不存在泄露风险,但是作为有态度的服务提供方,我们还是推荐您们也适当保护自己的数据), 推荐采用无关联的帐号和Token来绑定云信用户,并在登录时加上从应用服务器上获取云信帐号和 Token 的流程。


我下载的demo连不上服务器,有没有特定端口需要配置?

检查你所处的网络防火墙是否允许访问外部服务器的8080端口。


demo改了appkey为什么不能注册也不能获取聊天室列表?

demo使用的是demo的appkey,其注册走的是demo的服务器。而更换了appkey之后,demo的服务器不识别更好后的appkey所以注册失败。(注册即创建云信ID是服务端接口)。同理,获取聊天室列表也是从demo的服务器中获取。


为什么android从对方接来的excel下载不了?

android的demo只做收发的演示,下载跟下载图片接口都一样,调downlodAttachment,因为没有系统的文件选择器这种东西,要选择文件保存到哪里,这个需您自己做一下。 IOS的demo是可以查看并下载发来的文件比如excel、word。


iOS版SDK


iOS SDK 兼容 ATS

前言

随着苹果在 2017.1.1 推出的新政,App 将不在允许直接使用 Allow Arbitrary Loads = YES 对所有域名进行规避的方案。基于此,云信 iOS SDK 也做了相应的兼容处理。

我们做了什么

云信 SDK 主要提供 IM 相关的功能,其内部实现为基于 TCP 自主加密的协议,这方面并不需要做任何适配工作。而为保证整个 IM 功能的完整性,云信也内置了文件传输的功能,包括但不限于:消息内附件,用户头像,群主头像等信息。在旧版本,这些文件都是以 HTTP 请求的方式上传至服务器。这显然不符合苹果的规定。所以在新版本,我们文件传输进行了升级,上传下载一律采用 HTTPS 进行传输。

上层开发者需要做什么

在我们做完上面更新后,上层开发者可以直接使用我们的新 iOS SDK,而不需要再 plist 中进行任何 ATS 相关的设置。

但是云信是个多端产品,虽然 iOS 能够保证完全兼容 HTTPS,但其他端仍未完全兼容 HTTPS,从这些端收到的文件 URL 仍旧是使用 HTTP(当然还有老版本的问题)。所以上层开发者如果有某些特殊化的使用场景,则需要自行进行兼容。

云信中使用到文件信息的地方包括:

前四种消息附件 iOS SDK 已经完成完全的兼容处理:自动将其他端发送文件附件 URLHTTP 转换为 HTTPS格式。

而自定义消息,由于整个类结构是由上层决定,iOS SDK 并不能智能完成这部分消息的附件 URL 格式的自动转换,需要上层用户做相应的处理。在 id 中定义了一个将云信连接从 HTTP 转为 HTTPS 的接口:convertHttpToHttps:,在需要下载该文件的地方,先进行转换即可。具体参考 demo 中下载阅后即焚的实现。需要注意的是,如果某种自定义消息需要由 SDK 接管附件下载,那么需要在 NIMCsutomAttachment 协议 attachmentURLStringForDownloading 处理 HTTPHTTPS 的转换过程。

后三种头像信息,如果上层开发直接使用云信头像,那么不需要做任何处理。如果使用自己服务器的文件地址,那么需要设置 NIMSDKCofig 中的 enableHttpsForInfoNO


集成iOS NIM SDK的最低要求?

SDK 最低支持 7.0,Xcode 版本要求 8.0 以上。


iOS Demo打开编译失败?


集成碰到问题,如何解决?

推荐按照开发者如下顺序进行排查:


SDK过大怎么办?

由于 NIM SDK 是静态库,且为了方便开发者使用,我们将armv7 i386 x86_64 arm64平台 的静 态库合并成一个Fat Library,导致整个 SDK 比较大。但实际编译时会根据调用功能多少增加 ipa 文件大小,实测大约只会增加2-3M左右。


登录失败怎么处理?

登录接口回调方法中包含错误信息,请检查[error code],常见的错误码有 :


iOS如何快速实现一个聊天窗口界面?

从头开始实现一个聊天窗口的代码量大约在 5 千行左右且有各种坑需要处理,推荐直接使用云 信中的UI库 NIMKit ,或者使用一些开源的解决方案,如JSQMessage。


APP退到后台后无法收到消息和通知?

由于 iOS 系统的限制,大部分 APP 并不能支持后台运行,所以在 APP 退到后台后几秒到几分 钟后 APP 就被挂起,无法收取任何消息。在这种情况下所有的消息和通知都是通过推送 (APNS) 来通知用户。只有在用户收到推送并打开 APP 后,SDK 才会自动重连上服务器并拉取 离线的消息和通知。


APP退到后台无法收到推送消息?

并不是接入 NIM SDK 后苹果推送 (APNS) 就会自动生效,为了使之生效,开发需要做如下配 置 :


IOS的SDK由于缓存较大 上架时候被拒,能不能设置不同步icloud?

我们的SDK目录就是设置成默认不备份。“可以去读取下 $Documents/NIMSDK 下面的两个子目录Users和Global目录的属性,他们都是有NSURLIsExcludedFromBackupKey这个file attributes,而且都是YES”


Android版SDK


SDK初始化操作必须放在Application的onCreate中吗?

是的。因为典型情况下,云信的service会工作在push进程,当push进程从后台自动启动时,除了Application的onCreate,就没有其他机会去初始化SDK了。当然,如果您将云信的service和主UI进程放在一起,且不要求后台自动登录,那么可以在您觉得合适的地方去初始化。


想做一个@某人的效果,如何做?


未读数怎么清零?


为什么发出自定义通知后,没有触发我的receiver?

    请检查一下是否
        <permission android:name="com.netease.nim.demo.permission.RECEIVE_MSG" android:protectionLevel="signature"/> 
    和
        <uses-permission android:name="com.netease.nim.demo.permission.RECEIVE_MSG"/> 
    都添加到了manifest文件中,第一项为声明权限,第二项为声明要使用该权限,二者缺一不可。


消息发送失败,如何重发此条消息?

发消息API:sendMessage(IMMessage msg, boolean resend); 仔细看参数,后面的boolean表示重发消息。


如何判断attachment的发送状态?

def 未下载 ,跟失败一样,都可以用 downloadAttachment重新下载。


我们用自己的V7包可以么?

如果使用我们的uikit的话,那么v7包就要用我们的版本,我们的是基于v7 19的,如果用其他版本(21/23),会引起冲突。


PC版SDK


集成NIM Windows客户端SDK的最低要求?

Windows客户端 SDK是VC2010开发的,使用方式是APP开发者通过动态加载SDK DLL使用,只要在发布的应用程序中带上msvcr100.dll 和 msvcp100.dll两个运行库即可,因此对集成SDK无最低要求,建议vc版本越高越好。


Windows客户端如何使用自定义的用户数据目录?

Windows客户端 SDK本身提供用户自定义数据目录文件路径,只需用户在初始化SDK时传入绝对路径,但是,这里需要注意的是,Windows 7开始对系统盘下面的目录是有很强的权限控制的,使用不当极易导致用户数据无法正常读写,因此建议APP开发者尽量将用户数据目录放在系统本地应用数据目录下

%LOCALAPPDATA%,
     WIN7即以上在系统盘C:\Users\<user name>\AppData\Local,
     WIN XP/2000在C:\Documents and Settings\ <user name>\Local Settings\Application Data

具体使用方法就是在只要在初始化SDK时传入目录名字,SDK即会在系统本地应用数据目录下创建相应的文件目录作为用户数据目录。


Windows客户端的SDK 支持哪些开发语言 ?

Windows客户端 SDK开放的是C接口,因此常见的桌面开发语言都可以调用,比如C++,Java,VB,C#,Javascript,Python等。


Web版SDK


SDK 兼容老版本浏览器吗?

目前 SDK 兼容到 IE8, IE8/IE9 使用 xhr-polling 来模拟长连接, 其它高级浏览器使用 WebSocket 建立长连接。


文件上传兼容老版本浏览器吗?

目前文件上传兼容到 IE8, IE8/IE9 使用 Iframe 上传文件, 其它高级浏览器使用 FormData 上传文件。


消息


都有什么消息类型,是否支持自己的自定义消息类型?

云信原生支持了文本,图片,语音,视频和地理位置等常用的消息类型;对于产品的特殊需求云信也提供自定义消息类型,产品可以使用自定义消息实现“阅后即焚”等特殊的消息类型。


云信发送的图片缩略图和原图是什么样的一个比例?

iOS:长宽等比缩放,2倍显示屏幕上,短边缩到150为止。iPhone4以上到除了plus,都是2倍屏幕 所谓的Retina,plus系列是三倍屏幕,就是说plus上会是225为止。iPhone 3gs以及以下,是一倍屏幕到75为止;
Android:在SDKOption#thumbSize中设置一个宽度,等比例缩放。一般来说是会话窗口里面图片那个气泡的宽度大小。也可以简单设置成 屏幕宽度的一半。


是否能指定不接受来自特定用户或特定群的消息?

云信提供基于自己的好友体系的黑名单功能。同样也提供了修改群消息通知的接口。详见如下文档: iOS消息提醒 iOS群消息提醒


消息历史记录保存多久 ,如何获取?

SDK会保存一份本地消息历史记录,并提供了删除和查询的接口,由应用自己管理。云信服务端提供保存服务端保存历史记录的服务。该服务占用服务端存储资源,是一项收费服务,最长可以保存3年。服务端保存的历史记录,同样提供查询接口供应用使用。


管理后台向用户(或群)发系统消息如何实现?


消息长度有没有限制 ?

云信的消息长度限制为5000字符。


云信语音消息的音频文件和视频消息的视频文件分别是什么格式

对于语音,视频消息而言,云信只负责提供文件的上传和消息投递,所以音频使用任何格式都 可以。但是推荐使用云信提供的接口进行音频的录制和播放,因为我们提供了高清语音录制方 法,语音清晰度远超同类产品。使用云信提供的接口进行音频录制时限定的格式为aac。


云信如何发表情?

聊天时的表情其实就是字符串,通过一定规则的映射显示不同的图片即可。具体可以参考云信 DEMO中的实现。


能不能限制只发送文本消息,不要发送图片和文件

可以的,这个功能在上层中可以限制,限制只发送文本消息,不能发送图片和文件消息,而且我们提供的是一个平台根据您的需要可以删减任何不需要的功能。


Demo的卸载重装消息的问题

1)每次卸载重装都会产生新的设备ID,然后登录上来,服务器会漫游100个会话(每个会话100条曾经收发的消息)过来。
2)android这边其实并不卸载,就清理数据,但是也会重新生成一个设备ID,登录上来之后,也会收到漫游。比如说,我在android设备上登录了,发了“hello world”,然后我去清理一把应用的数据,在去登录,服务器就去漫游“hello world”过来。
3)漫游是服务器管理的,跟客户端并没有关系,但是客户端要记得就是去系统里清理应用数据,也会漫游的,反正就是SDK的db被清空了,就会漫游过来。或者另外一种情况:用户去设置应用管理里面,可以清理掉,一个app产生的数据,这时候在登录,也会漫游的。 只要产生新的设备ID,就会有漫游。


会话列表及漫游消息详解

各端获取最近会话列表均从本地数据拿。获取的列表数量没有上限。 会影响本地数据的情况: 1、应用执行过删除会话接口。 2、换了新手机,或者清除过云信本地数据。 3、开启漫游的情况, 服务端会同步漫游数据到本地数据库。


漫游详情

漫游消息现在线上的配置是100个会话,每个会话最新100条,最近7天 其他细节: 1、Web高级浏览器(支持本地数据库的),也会和其他客户端一样,具有本地历史数据。


群组


群成员上限是多少,群数量上限是多少?

云信产品默认每个用户可以创建50个普通群,每个群最多200个成员,可以创建50个高级群,每个群最多200个成员,对于产品的特殊需求我们可以支持群数量和群容量的扩容。


服务端接口创建了群,并指定了成员,成功后查询群成员只能看到群主自己?

创建群的接口有参数“magree”表示“是否需要群成员同意”,如果你建了群只能看到自己,请首先检查这个参数,如果选择了该选项,只有在被邀请者同意之后才会出现在群成员列表中。


SDK是否提供设置群容量的接口?管理后台可以设置么?

SDK不提供该接口。管理后台暂时不可设置,后续会考虑提供。


高级群和普通群的区别?


高级群群主执行quitTeam是否会成功?是否会解散群?

高级群主执行quitTeam不会成功,不会解散群。群主要退群需要将群主权限转让给群里指定成员或直接解散群。


退群后我希望把最近联系人列表的记录也删掉,该怎么做?

删除最近联系人记录有两个接口,分别是deleteRecentContact和deleteRecentContact2,其中第一个接口以RecentContact类型作为参数,调用后不会再触发观察者通知,适合在最近联系人列表调用。第二个接口以account和sessionType作为参数,删除成功后会触发MsgServiceObserver的observeRecentContactDeleted通知。因此你可以调用第二个接口,并在最近联系人列表上添加删除事件的观察者。


聊天室


有获取聊天室管理员列表的接口吗?

目前还没有直接能获取的接口,不过建议您先获取聊天室成员之后,根据成员的memberType去检索出来成员身份。


聊天室收发消息和IM普通有什么不同吗?

聊天室消息收发接口与普通消息收发统一,在发送消息时指定会话类型为聊天室即可。会话 id 即为聊天室 id。但聊天室的消息,SDK对收到的消息是有做合并的,而其他IM消息,只有离线消息和漫游消息会从服务器批量下来。


聊天室在线人数怎么获取?

用户进入聊天室后可以通过获取聊天室信息获取聊天室内的在线人数。聊天室内的成员进出,云信服务器会客户端下发一条进出类型的通知类消息,客户端再根据通知类消息实时加减聊天室在线人数。 聊天室其他内容可参见云信聊天室 FAQ


音视频与白板


音视频支持的分辨率?

分为流畅(176X144)、标清(352x288)、高清(480X320)、超清(640X480)


用音视频一分钟会消耗多少流量?

流畅:150MB/小时 = 0.333Mbps (带宽) 标清:260MB/小时 = 0.578Mbps (带宽) 高清:320MB/小时 = 0.711Mbps (带宽) 超清:400MB/小时 = 0.889Mbps (带宽) 音频通话:32MB/小时 = 0.071Mbps 这些流量在不同网络和机型下还略有区别,在移动网络下会低一些


了解一下硬编和软编的概念

硬编:硬件编码 软编:软件编码(H264库,目前我们采用软编)


你们的码率是多少?

最低码率是100Kb,最高码率是400Kb(根据网络动态调整)。


实时音频编码是哪些?

G7111(最耗流量,最少运算量)
ILBC(中间)
OPUS(最省流量,运算量最大,但是效果好,目前我们采用OPUS)


你们的帧率是多少?

帧率是15帧,当然这个可以调整,其中15帧,1帧是I帧,14帧是P帧。 I帧表示关键帧,可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)。 P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)


短信


短信计算规则内容?

云信短信计费包括短信签名,70字计1条短信费,超过70字则以67字每条计费,当短信中出现中文字符,则单个汉字、英文、标点和空格等都算一个字。


短信的计费模式?

云信短信按照用户实际使用情况进行实时计费,出月账单时会统计用户上个月的短信发送状态,对运营商返回短信发送成功状态的短信和未返回发送状态的短信进行扣费,对返回状态为发送失败的短信根据失败条数进行短信量反充。


短信发送失败,还是会扣费吗?

接口调用失败及运营商返回失败状态,都不会扣费。


短信发送频率上有什么样的限制?


短信显示号码及显号规则?

手机端接收显示的号码是106开头的正规号码 显号规则:


短信提供哪些功能?

目前支持短信下行发送、短信状态报告回执、帐单查询等;暂不支持短信上行发送。


短信发送成功,但实际未能收到短信是什么原因?


短信发送状态回执哪里查看?


短信三网都可发送吗,能发送海外/港澳台吗?

支持三网发送,目前海外/港澳台暂不支持,敬请期待。


短信字数最多能发多少个字?

最大支持发送300个字以内的短信。


变量可传字符长度为多少个字?

网易云信提供的模板短信由固定内容与多个变量构成,其中 " %s " 为需要接口替换的变量,变量内容可以是汉字、字母、数字或者特殊字符组合,但单个变量内容长度不得超过30个字。


变量中可直接写链接吗?

变量中不允许传链接,包含短链接;建议将已ICP备案的网址写于短信模板非变量内容中,审核通过后可发送。


为什么传进来的验证码首位不支持0?

云信模版短信参数仅支持string类型,如果使用int类型则首位的0会被省去。


如何有效防止短信轰炸?

短信轰炸指在短时间内通过恶意程序,批量.循环给一批手机号码无限发送各种无效短信的行为,导致接收短信的手机用户被骚扰 ,给业务方造成品牌及业务不良影响,设置有效业务流控,以下为云信业务流控:


发送短信验证码为什么数字后面会出现“.0”?

json格式请使用string类型。


支持同时发多个手机吗?

支持,建议一次最多可提交200个手机号码,以防发送失败。


API调用次数有没有限制?

创建应用即可获得100万次的每日调用


其他


云信都提供哪些功能服务?


云信的收费标准,价格怎么样?

我们的云信服务针对不同的业务,有不同的报价单,您可以先注册试用,再联系我们商讨价格问题。


云信售后服务怎么样?

网易云信团队拥有10年以上的IM开发及运营经验,数名业界资深专家、高级工程师保障IM云服务的高品质运作,提供7*24小时的实时运维服务。


日活数里的日活是什么定义?

“日活”即“日活跃用户数”,指一个自然日内与云信服务器成功进行业务行为交互的用户总数,业务行为包含但不局限于(登录、重连、消息行为、群组行为、好友行为、个人信息行为),同一个用户在一个自然天内有多次业务行为交互只统计一次。每个产品(应用)的日活分别统计。


云信是否支持推送?

云信提供移动端消息推送的能力。即用户应用在后台时可以通过通知栏提醒的方式告知用户消息到达。云信推送针对云信ID,即需指定对方id投递消息或通知。


为什么我退到后台以后,系统推送屏幕不会亮

iOS的APNS推送,退到后台,是可以点亮推送的。Android的推送因为谷歌退出中国市场的缘故,导致推送功能并没有像苹果的APNS推送那么完善,但是我们工程师经过优化,可以保证进程在的时候,可以实时收到推送,只是Android的Demo点亮屏幕没有顺手做了,所以这个需要开发者上层自行实现。


SDK日志存放路径

安卓: /外卡根目录/{app_package_name}/nim/log/nim_sdk.log

iOS: {Documents}/NIMSDK/Log 也可以调用 [[NIMSDK sharedSDK] currentLogFilepath] 来获取当前log文件地址
真机:window-》device-》自己的机器-》自己的沙盒-》里面有个像齿轮一样的东西-》downLoad

PC: 数据缓存目录默认为"{系统的AppData 目录}{App 传入的目录名}\NIM{某个用户对应的用户数据目录}”,还可以由App 完全自定义用户数据目录,需要传入完整的路径,并确保读写权限正确。


点击跳转到对应会话页面的问题

ios: 如果收到推送的时候,程序还没死

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
   //拿userinfo的payload做跳转
}

    如果收到推送的时候,程序死了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 //拿launchOptions里的payload做跳转
}
Android:( demo/main/activity/WelcomeActivity )
    /**
    * 通知栏跳转提醒
    * @param intent
    */
   private void parseNotifyIntent(Intent intent) {
        ArrayList<IMMessage> messages = (ArrayList<IMMessage>) intent.getSerializableExtra(NimIntent.EXTRA_NOTIFY_CONTENT);
        if (messages == null || messages.size() > 1) {
            showMainActivity(null);
        } else {
            showMainActivity(new Intent().putExtra(NimIntent.EXTRA_NOTIFY_CONTENT, messages.get(0)));
        }
    }


自定义消息与自定义通知的区别

自定义通知:

    1. 消息格式由第三方 APP 自己定义,只要内容是 String 就可以了。
    2. 第三方 APP 的客户端和服务器均可以发送自定义通知。
    3. 接收对象可以是个人,也可以是群组。
    4. 可设置通知的到达级别:保证必达,或是通知接收者只有当前在线才能收到。
    5. 如果需要向 iOS 用户推送,可自定义 iOS 的推送内容。

自定义消息: 自定义消息采用附件的方式展示给开发者。体现在 IMMessage类中,自定义消息的内容会被解析为 MsgAttachment对象, 由于 SDK 并不知道自定义消息的格式, 第三方 APP 需要注册一个自定义消息解析器。

自定义通知和自定义消息的不同之处在于:

    1. 自定义消息归属于网易云信的消息体系内,适用于会话中,由 SDK 存储在消息数据库中,与网易云信的其他内建消息类型一同展现给用户。
    2. 自定义通知主要用于第三方的一些事件状态通知,网易云信不存储,也不解释这些通知,网易云信仅仅负责替第三方传递和通知这些事件,起到透传的作用。


云信是否支持陌生人聊天及匿名登录?

云信支持陌生人聊天。匿名登录基于云信的实现是后台分配特殊的云信账号供用户登录使用。


sdk有多大

iOS:29M (不包含音视频 ) Android:3M (不包含音视频 ) PC:6.9M WEB:0.6M iOS由于 SDK 是静态库,为方便开发者使用,我们将 armv7 i386 x86_64 arm64 平台的静态库合并成一个 Fat Library ,导致整个 SDK 比较大。但实际编译时会根据调用功能多少增加 ipa 文件大小,实测大约只会增加 6-10M 左右。