leancloud / leanmessage-demo Goto Github PK
View Code? Open in Web Editor NEW使用 LeanCloud 实时通讯搭建的聊天 WebApp
Home Page: https://leanmessage.leanapp.cn
使用 LeanCloud 实时通讯搭建的聊天 WebApp
Home Page: https://leanmessage.leanapp.cn
/XX/leanmessage-demo-master/Web/gulp_tasks/karma.js:10
return failCount => {
^
SyntaxError: Unexpected token >
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module._load (/XX/leanmessage-demo-master/Web/node_modules/gulp-hub/lib/load-subfile.js:26:32)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at module.exports (/XX/leanmessage-demo-master/Web/node_modules/gulp-hub/lib/load-subfile.js:30:4)
at /XX/leanmessage-demo-master/Web/node_modules/gulp-hub/lib/hub-registry.js:57:30
at arrayEach (/XX/leanmessage-demo-master/Web/node_modules/gulp-hub/node_modules/lodash/index.js:1289:13)
npm ERR! @ build: gulp
npm ERR! Exit status 8
npm ERR!
npm ERR! Failed at the @ build script.
npm ERR! This is most likely a problem with the package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! gulp
npm ERR! You can get their info via:
npm ERR! npm owner ls
npm ERR! There is likely additional logging output above.
npm ERR! System Darwin 16.0.0
npm ERR! command "node" "/usr/local/bin/npm" "run" "build"
npm ERR! cwd /XX/leanmessage-demo-master/Web
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /XX/leanmessage-demo-master/Web/npm-debug.log
npm ERR! not ok code 0
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
在AVImClientManager.java中 AVIMClient.getInstance(clientId); 处理这句的时候报错。
只有登录界面是正常的,进入聊天室后界面就是乱的,界面上随便点进去单聊界面连输入框都没有。
Xcode 8.1,iOS Simulator 9.3 and 10.1
05-24 14:42:47.610 14811-14811/com.example.admin.leancloudimtest E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.admin.leancloudimtest, PID: 14811
java.lang.RuntimeException: setAudioSource failed.
at android.media.MediaRecorder.setAudioSource(Native Method)
at cn.leancloud.chatkit.view.LCIMRecordButton.startRecording(LCIMRecordButton.java:198)
at cn.leancloud.chatkit.view.LCIMRecordButton.startRecord(LCIMRecordButton.java:140)
at cn.leancloud.chatkit.view.LCIMRecordButton.onTouchEvent(LCIMRecordButton.java:96)
at android.view.View.dispatchTouchEvent(View.java:9300)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
at android.app.Activity.dispatchTouchEvent(Activity.java:2771)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
at android.view.View.dispatchPointerEvent(View.java:9520)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4230)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4096)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5922)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5896)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5857)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRoot
经过 2015-06-09 初步讨论,Demo 1的实现需求就是:用户下载demo 直接运行,输入 client id 直接进入一个我们预设的对话进行聊天。
基于此需求,设计了如下初稿。
设计稿在线地址为:https://www.processon.com/view/link/5577a1c4e4b0d6a77d97104d
Page 2功能解释:
用户在阅读 Demo 代码的时候初衷是看我们如何发送消息和接收消息,对本地缓存这种只有生产代码才会出现的逻辑,我们的开发者在第一次接触的时候完全不需要出现在他们的视线范围内。
因为只要我们的消息准确送达,做不做缓存,怎么做缓存,高级开发者都有自己的一套逻辑,Demo 做这个展现有点多余。
现在这个 readme 文档完全不达标,这个部分由 @wujun4code 来负责,最后由 @jwfing 和 @李达 来 review.
开发者在配置完 ios 的 demo 之后,需要跟另一端进行联调,web 版就是最好的一个入口,那么 web 版的 demo 也必须跟 ios 有一致的用户体验,目前 web 版本是内置了一个应用的 appid 以及 appkey,这样是不对的。
所以在 release ios demo 之前 web demo 也必须重构。
cd to rootpath not found pod
这个是用的推送,所以每条消息都会弹出来,一旦离线很久,就很多,但能不能在应用层怎么处理一下,让通知栏针对每个聊天对象只显示一条最新的消息或者所有对象都集合起来只显示一条通知,即未读消息数。
Error:Execution failed for task ':app:packageDebug'.
Duplicate files copied in APK META-INF/LICENSE.txt
File 1: /Users/demon/Desktop/PushAndTalk/libs/fastjson.jar
File 2: /Users/demon/Desktop/PushAndTalk/libs/httpmime-4.2.4.jar
如果在build.gradle中加入
packagingOptions {
exclude 'META-INF/LICENSE.txt' }
则会出现Error:(25, 0) Gradle DSL method not found: 'packagingOptions()'
Possible causes:The project 'PushAndTalk' may be using a version of Gradle that does not contain the method.
node -v
v7.1.0
npm -v
3.10.9
运行npm install 报错
npm ERR! registry error parsing json
npm ERR! registry error parsing json
npm ERR! registry error parsing json
NSString *otherId = self.otherIdTextField.text;
if (otherId.length > 0) {
[[LeanMessageManager manager] createConversationsWithClientIDs:@[otherId] conversationType:ConversationTypeOneToOne completion: ^(AVIMConversation *conversation, NSError *error) {
if (error) {
NSLog(@"error=%@", error);
}
else {
[self performSegueWithIdentifier:@"toChat" sender:conversation];
}
}];
}
这段代码会给初学者(第一次接触 LeanMessage 的开发者)造成困扰:为什么你们官方 SDK 不把 LeanMessageManager 集成进去?而在 Demo 里面还封装了一套业务逻辑?
我不建议 Demo 的代码需要遵照生产环境的逻辑严密性进行开发,Demo 只列出 SDK 最基本的接口,不需要做过多的逻辑判断。
LoginViewController
中 openSessionAndGoMainViewController
的方法里面实现的打开 session 和跳转到 MainViewController ,这段逻辑直接加到 onLoginButtonClicked 中即可,Demo 封装的越多越会对用户造成困扰, Demo 就是越简单越好,不是越专业越好。MainViewController
中的 onChatButtonClicked
中的调用 LeanMessageManager 的代码全都展示出来, LeanMessageManager 这个类必须在 Demo 中删除UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/alibaba/fastjson/JSONStreamAware;
I use command+shift+o to search JSONStreamAware,and the result is it's single class.
this is my build.grade in app folder
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.flaviofaria:kenburnsview:1.0.6'
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.soundcloud.android:android-crop:1.0.1@aar'
compile 'com.viewpagerindicator:library:2.4.1@aar'
compile 'com.squareup.picasso:picasso:2.5.2'
//avoscloud-sdk 为 LeanCloud基础包
compile 'cn.leancloud.android:avoscloud-sdk:v3.+'
//avoscloud-push 与 Java-WebSocket 为推送与IM需要的包
compile 'cn.leancloud.android:avoscloud-push:v3.+@aar'
compile 'cn.leancloud.android:Java-WebSocket:1.2.0-leancloud'
//avoscloud-statistics 为 LeanCloud 统计包
compile 'cn.leancloud.android:avoscloud-statistics:v3.+@aar'
}
对外发布的 Demo 名称必须与对应的产品模块名称一模一样,这一点不允许有任何自定义的余地。
chat ,keepalive 这些完全不能与官方网站的功能能模块对应。
点击某条消息进入单聊的时候,下拉刷新会触发NullPointerException:
03-15 09:03:58.503 19423-19423/com.leancloud.im.guide E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.leancloud.im.guide, PID: 19423
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.leancloud.im.guide/com.leancloud.im.guide.activity.AVSquareActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.leancloud.im.guide.activity.AVSquareActivity.getSquare(AVSquareActivity.java:93)
at com.leancloud.im.guide.activity.AVSquareActivity.onCreate(AVSquareActivity.java:63)
at android.app.Activity.performCreate(Activity.java:5310)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2381)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730)
at dalvik.system.NativeStart.main(Native Method)
有时是这种
03-15 09:06:54.071 21028-21028/com.leancloud.im.guide E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.leancloud.im.guide, PID: 21028
java.lang.NullPointerException
at com.leancloud.im.guide.fragment.ChatFragment$1.onRefresh(ChatFragment.java:70)
at android.support.v4.widget.SwipeRefreshLayout$1.onAnimationEnd(SwipeRefreshLayout.java:185)
at android.support.v4.widget.CircleImageView.onAnimationEnd(CircleImageView.java:107)
at android.view.ViewGroup.finishAnimatingView(ViewGroup.java:5541)
at android.view.View.draw(View.java:14687)
at android.view.ViewGroup.drawChild(ViewGroup.java:3268)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3099)
at android.view.View.draw(View.java:14779)
at android.view.View.getDisplayList(View.java:13615)
at android.view.View.getDisplayList(View.java:13662)
at android.view.View.draw(View.java:14470)
at android.view.ViewGroup.drawChild(ViewGroup.java:3268)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3077)
at android.view.View.getDisplayList(View.java:13607)
at android.view.View.getDisplayList(View.java:13662)
at android.view.View.draw(View.java:14470)
at android.view.ViewGroup.drawChild(ViewGroup.java:3268)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3077)
at android.view.View.getDisplayList(View.java:13607)
at android.view.View.getDisplayList(View.java:13662)
at android.view.View.draw(View.java:14470)
at android.view.ViewGroup.drawChild(ViewGroup.java:3268)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3077)
at android.view.View.draw(View.java:14779)
at android.widget.FrameLayout.draw(FrameLayout.java:534)
at android.view.View.getDisplayList(View.java:13615)
at android.view.View.getDisplayList(View.java:13662)
at android.view.View.draw(View.java:14470)
at android.view.ViewGroup.drawChild(ViewGroup.java:3268)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3077)
at android.view.View.getDisplayList(View.java:13607)
at android.view.View.getDisplayList(View.java:13662)
at android.view.View.draw(View.java:14470)
at android.view.ViewGroup.drawChild(ViewGroup.java:3268)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3077)
at android.view.View.getDisplayList(View.java:13607)
at android.view.View.getDisplayList(View.java:13662)
at android.view.View.draw(View.java:14470)
at android.view.ViewGroup.drawChild(ViewGroup.java:3268)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3077)
at android.view.View.getDisplayList(View.java:13607)
at android.view.View.getDisplayList(View.java:13662)
at android.view.View.draw(View.java:14470)
at android.view.ViewGroup.drawChild(ViewGroup.java:3268)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3077)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchDraw(PhoneWindow.java:2418)
at android.view.View.draw(View.java:14779)
at android.widget.FrameLayout.draw(FrameLayout.java:534)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2398)
at android.view.View.getDisplayList(View.java:13615)
at android.view.View.getDisplayList(View.java:13662)
at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1663)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1538)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2775)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2637)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2253)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1210)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6408)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:807)
at android.view.Choreographer.doCallbacks(Choreographer.java:610)
at android.view.Choreographer.doFrame(Choreographer.java:578)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:793)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.re
我快崩溃了,一个demo都跑不起来。一直在加载 一直在下载,我这网速可以啊
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.