20 行代码极速为 App 加上聊天功能

微聊APP 聊天功能的开源APP项目 微聊APP 聊天功能的开源APP项目,原生APP开发,适合做社交软件的朋友借鉴开发。 立即下载

现在很多 App 都需要集成 IM 功能,今天就为大家分享一下集成 IM 基本功能的步骤。本文内容以 JMessage 为例。
极光 IM ( JMessage ) = 极光推送 ( JPush ) + IM,本篇只论述其中的 IM 部分,为大家快速集成 IM 功能提供一个简明的范例。

我们先来看一下 IM 的基本功能与本文内容的对应关系:

line 0:准备工作


line 1:引入头文件


#import <JMessage/JMessage.h>

JMessage 核心头文件。这是唯一需要导入到你的项目里的头文件,它引用了内部需要用到的头文件。

line 2:开启事件监听


[JMessage addDelegate:self withConversation:nil];
  • 用于监听各种全局事件
  • 建议写在 line 3 之前
  • Parameters:
  • delegate:填入对象需要实现
  • conversation:nil 监听所有通知,非 nil 监听指定会话

line 3:启动 SDK


[JMessage setupJMessage:launchOptions
                 appKey:@"your appkey"
                channel:@"channel name"
       apsForProduction:NO
               category:nil];
  • 建议写在 application:didFinishLaunchingWithOptions:
  • Parameters:
  • launchOptions:启动函数的参数 launchingOption
  • appKey:获取方式 line 0 - 集成 SDK
  • channel:应用的渠道名
  • isProduction:是否为生产模式
  • category:iOS8 新增通知快捷按钮参数

line 4:注册新用户


[JMSGUser registerWithUsername:@"username" 
                      password:@"password"
             completionHandler:^(id resultObject, NSError *error) {
}];

Parameters:
- username:用户名
- password:密码
- handler:error 为 nil 时调用成功(下均同)

line 5:登录


[JMSGUser loginWithUsername:@"username" 
                   password:@"password" 
          completionHandler:^(id resultObject, NSError *error) {
}];

line 6:创建单聊会话


[JMSGConversation createSingleConversationWithUsername:@"username" 
                                     completionHandler:^(id resultObject, NSError *error) {
}];

line 7:发送文本消息


[(JMSGConversation*)resultObject sendTextMessage:@"text"];

line 8~12:接收文本消息


- (void)onReceiveMessage:(JMSGMessage *)message error:(NSError *)error{
    if (message.content == kJMSGContentTypeText) {
        NSString *text = ((JMSGTextContent *)message.content).text;
    }
}

line 13:获取历史消息


NSArray *messages = [(JMSGConversation*)resultObject messageArrayFromNewestWithOffset:nil limit:nil];
  • 利用 line 6 中的 resultObject 转型后获取
  • 单聊群聊均可
  • Parameters:
  • 返回 NSArray<JMSGMessage* >
  • offset:起点。nil 从最新一条开始,n 从最新第 n 条往历史追查
  • limit:数量。nil 表全部

line 14~15:清零单聊未读消息数


JMSGConversation *conversation = [JMSGConversation singleConversationWithUsername:username];
[conversation clearUnreadCount];

line 16:获取会话列表


[JMSGConversation allConversations:^(id resultObject, NSError *error) {
}];
  • 批量获取所有会话列表
  • 根据会话类型判断是单聊还是群聊
  • Parameters:
  • resultObject:NSArray

line 17:删除单聊会话


BOOL success = [JMSGConversation deleteSingleConversationWithUsername:username];

line 18:批量获取用户详情


[JMSGUser userInfoArrayWithUsernameArray:nameArr completionHandler:^(id resultObject, NSError *error) {
}];
  • Parameters:
  • nameArray:NSArray

line 19:创建群组及相关操作


[JMSGGroup createGroupWithName:name desc:desc memberArray:members completionHandler:^(id resultObject, NSError *error) {
}];
  • Parameters:
  • name:群名
  • desc:群组描述
  • memberArray:成员列表,NSArray

line 20:退出登录


[JMSGUser logout:^(id resultObject, NSError *error) {
}];
至此一个 IM 的各种基本操作就完了,是不是

很简单?


作者:pikacode - 极光

原文:20 行代码极速为 App 加上聊天功能

知乎专栏:极光日报

STC32G电调调试血泪史:从TPH1R403NL MOS管烧毁到PWM信号异常排查全记录 本文详细记录了STC32G无刷电调调试过程中的常见问题与解决方案,包括MOS管烧毁、PWM信号异常等关键故障排查。通过电源系统检测、驱动电路验证及三相平衡调试等实战经验,帮助硬件爱好者快速定位问题,提升电调调试效率。特别针对TPH1R403NL等MOS管的保护措施进行了重点分析。 阅读详情

相关推荐

L2-011 玩转二叉树

L2-011玩转二叉树(25分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式: ...

Beworth1207的博客 1734

uniapp实时通信(语音/图片/文字)代码复制即用

【代码】uniapp实时通信(语音/图片/文字)

m0_60317712的博客 4145

实战解析:利用Python requests库高效抓取京东商品评论并构建结构化数据集

本文详细介绍了如何利用Python requests库高效抓取京东商品评论并构建结构化数据集。通过分析京东评论接口、处理反爬机制以及数据解析存储,帮助开发者快速获取电商数据,适用于竞品监控、用户画像构建等商业场景。

weixin_42526415的博客 837

在uniapp中实现即时通讯中的【发送语音】

在与好友的对话框中,点击语音图标可以切换到给好友发送语音,长按发送语音的按钮即可开始录音: 如果录制时间小于60s时,松手则表示录音结束并将语音消息发送给对方; 如果录制的时间超过60s则自动结束,并将语音发送给对方; 如果在录制60s之内并且没有松手,而是上滑100像素,则表示取消发送该条语音;

qq_45569925的博客 2960

ArduPilot飞控系统代码解读及架构分析

ArduPilot飞控系统是一个复杂而强大的系统,通过模块化设计和分层架构,实现了灵活的飞行控制功能。模块化设计: 各个功能模块相对独立,便于维护和扩展多种飞行模式: 满足不同的飞行需求强大的控制算法: 实现稳定的姿态和位置控制完善的安全机制: 保障飞行安全丰富的配置选项: 通过参数系统实现高度可定制性这种架构使ArduPilot能够适应从简单的多旋翼到复杂的自主飞行器等各种应用场景。类结构分析:Mode基类 (mode.h/mode.cpp)

fengforky的专栏 3019

避开这5个坑!ADNI数据库下载实操经验分享(含断点续传方案)

本文分享了ADNI数据库下载的5个常见陷阱及解决方案,包括高级搜索策略优化、断点续传技巧和数据完整性验证。特别针对大文件下载中断问题,提供了wget断点续传和分卷下载的实操方法,帮助研究者高效获取神经影像数据,避免重复下载和时间浪费。

git9versioner的博客 373

如何在uniapp平台快速实现一对一音视频通话app

“一套代码,多端运行” 是很多开发团队的梦想。ZEGO SDK基于uni-app跨平台框架支持iOS、Android、Windows、macOS、HarmonyOS、Web、小程序并支持平台间互通,快速实现搭建多端音视频通话,大大降低开发和学习成本。 本文将引导快速创建和运行第一个uni-app+RTC项目,适合想要快速完成多端共用音视频项目的开发者

ZEGO即构科技 4213

Git下载与安装

一、Git下载 二、Git安装

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 6万+

第一篇,用Uniapp仿微信的语音电话,视频聊天IM聊天APP开发,支持各类消息收发,音视频通话等

作为一个企业或者个人,拥有一款属于自己的IM即时聊天APP,可以在各个项目中方便的使用,项目非常稳定,安全,不需要花费大量的时间精力去做开发或者要很高的费用开发聊天项目。基于uni-app技术开发的仿微信项目,实现了文本消息、图文消息、表情(gif动画),图片预览,图片编辑,视频预览,视频编辑,仿微信的图片选择、编辑、长按菜单等功能。本项目的目的是要用Uniapp开发一套可以媲美原生效果的仿微信IM,可以支持WEB IM,android,苹果版本,程序代码开源。

2198

Langchain cannot connect with Azure SQL Database

Langchain 无法连接到 Azure SQL 数据库

suiusoar 633

把 SAP Event Mesh 讲透:从事件驱动架构到 SAP BTP 落地实践

摘要: SAP Event Mesh是SAP BTP上的云端消息与事件服务,支持企业构建解耦、弹性的应用架构。它通过异步通信模式(如发布/订阅)解决传统同步集成的痛点,如系统紧耦合、链路脆弱等问题。核心能力包括事件驱动通信、可靠消息投递(支持至少一次送达)、与SAP生态深度集成(如S/4HANA事件扩展)以及混合环境支持。典型场景包括订单处理、库存同步等,发布方只需发出业务事件,订阅方按需消费,避免系统间直接依赖,符合Clean Core理念。两种关键模式为广播式的Publish/Subscribe和定向的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 116

uniapp 创建语音消息

【代码】uniapp 创建语音消息。

m0_60997870的博客 857

36 Agent Memory:如何让智能体记住该记的东西

Agent 会调用工具,只能说明它有了行动能力。要让它跨会话、跨任务持续工作,还需要一套可治理的 Memory 系统。本文讲清上下文窗口、RAG 和 Agent Memory 的区别,以及工作记忆、情景记忆、语义记忆、程序记忆该如何分层设计。

老于的笔记的专栏 89

手机版html极速代码,20 行代码极速为 App 加上聊天功能

现在很多 App 都需要集成 IM 功能,今天就为大家分享一下集成 IM 基本功能的步骤。本文内容以 JMessage 为例。极光 IM ( JMessage ) = 极光推送 ( JPush ) + IM,本篇只论述其中的 IM 部分,为大家快速集成 IM 功能提供一个简明的范例。我们先来看一下 IM 的基本功能与本文内容的对应关系:line 0:准备工作line 1:引入头文件#import ...

weixin_39873325的博客 270

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

极速信使【IOS最强大的局域网聊天软件】

极速信使是一款基于局域网(个人wifi热点)Tcp连接的应用,拥有快速可靠的传输能力  ***************内容提要*************  【1】支持实时聊天  【2】支持文件传输,同时支持断点续传  【3】支持语音聊天,畅享免费语音  【4】支持使用其他App打开文件操作  【5】特别适合校园、小区、公交、火车、地铁交友 下载地址:http://

jack281706 2093

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大厂押注“极速版”

作者 |赵磊本文经授权转自燃财经(ID:rancaijing)生活在中国北方一个小县城的陈明,最近手机里装了不少APP。这让他在寒冷的冬天里长时间地窝在家里,没有出去打牌。在这款女...

优快云资讯 3815

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

重要的聊天记录误删了怎么恢复?恢复聊天记录的方法

微信聊天记录误删了该如何进行恢复?这样一个问题困扰着很多喜欢删除聊天记录的小伙伴,因为手机内存不足,时常会删除一些不重要的聊天记录,那么如果真的不小心将只要的聊天记录也一起删除了该如何恢复呢?下面我们就来一起看看具体的恢复方法吧。 首先声明:完全福利分享微信聊天记录恢复小技巧哦,不接受批评。 来看一下具体操作: 1.首先大家需要在手机浏览器或者手机应用商店找到极速数据恢复,安装在我们的手...

weixin_43015324的博客 2425

Chat0:免费极速的开源AI聊天应用完整指南

Chat0 是一款开源、免费的 AI 聊天应用,主打极速体验和隐私保护。你的所有聊天记录都只存在自己浏览器的本地数据库里,不经过任何云端服务器,适合不想把私人对话交给第三方、又想要流畅对话体验的人 🚀 [![Chat0开源AI聊天应用界面](https://raw.gitcode.com/gh_mirrors/ch/chat0/raw/8ad5b1b49fae143f8a6dc5363a051

gitblog_00089的博客 169

Chat0:终极开源AI聊天应用指南 - 隐私优先的极速体验

Chat0是一款开源、免费且极速的AI聊天应用,专为注重隐私和性能的用户设计。这款应用支持多模型AI对话,所有数据都存储在本地浏览器中,确保您的聊天记录绝对安全。无论您是AI新手还是资深用户,Chat0都能为您提供流畅、高效的聊天体验。🚀 [![Chat0开源AI聊天应用](https://raw.gitcode.com/gh_mirrors/ch/chat0/raw/c8f3adbdeed2

gitblog_00687的博客 539

小米怎么快速回到顶部_[玩机教程:App推荐篇 01] | 小米视频 极速版(MiVideo-Lite)...

1) 前言 hello,一直关注小米视频的小伙伴们,不知道大家有没有发现,2018年小米视频也跟随各大主流App,类似某宝Lite版,某条极速版,某博和某手快速版等,还有小米社区也跟随推送对应的【Lite版】(点击查看详情),当然,小米视频于2018年11月份在各大主流应用市场,陆陆续续地也上架了【小米视频极速版】。现在,你只需要在【小米应用商店】输入【小米视频】或者【小米视频极速版】...

weixin_39947961的博客 2802

社交媒体数据恢复:九信极速版

九信极速版是一款功能强大的社交软件,但在使用过程中,您可能会遇到数据丢失的问题,如聊天记录、好友等。不用担心,九信极速版提供了数据恢复功能,帮助您找回丢失的数据。温馨提示:请谨慎操作您的九信极速版账户,定期备份重要数据,以免造成不必要的损失。选择“恢复聊天记录”,然后勾选您需要恢复的聊天记录。如果您删除了某个好友,可以在通讯录中找到该好友的账号,然后重新添加对方为好友。若您记得被删除好友的账号或手机号,可以直接在九信极速版的“添加好友”功能中输入相关信息,然后发送好友申请。打开九信极速版,登录您的账号。

u011000995的博客 1984

做一个家政APP都需要哪些功能?

软件开发

m0_68912512的博客 435
上一篇: iOS 调试心得
下一篇: ThinkPHP 3.2.x 集成极光推送指北
极光推送
博客等级 码龄14年 109粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值