A powerful tool (iOS & Android) that focuses on mobile operation behavior!

Related tags

Kotlin DiDiPrism
Overview

小桔棱镜

PRs welcome!

DiDiPrism,中文名:小桔棱镜,是一款专注于移动端操作行为的工具,涵盖APP操作回放操作检测、以及数据可视化能力。我们在整个方案的实现过程中沉淀出了一套技术框架,希望可以逐步开源出来帮助更多人,同时也希望棱镜在大家的合力下能够更快的成长。

它有哪些亮点?

  • 零入侵

业务代码无需任何适配。

  • 高可用

各项能力已在生产环境平稳运行一年以上。

  • 自研操作行为标识指令

在支撑棱镜已有的功能外,或许可以有更大的舞台。

  • 丰富灵活的操作行为策略支持

基于DSL实现丰富的操作行为策略支持,可满足通常的检测需求。

  • 功能全面

围绕移动端操作行为全方位能力覆盖,提供更多可能。

用它能做什么?

一、操作回放(已开源)

小桔棱镜中最具创新性的功能,也是整个棱镜平台的基础,我们基于自研的操作行为标识指令实现了在APP端的操作回放(视频回放 / 文字回放)。相比于传统的静态埋点数据它提供了动态的操作行为,可以帮助大家更好的定位问题、优化产品,为用户创造价值。

当然它还可以有很多应用场景,比如无需手写脚本的自动化测试场景,仅单纯的操作行为标识指令就可以被应用到很多我们还没有想到但已经收到诉求的场景中,因此我们选择把它开源出来造福更多人。

[Demo展示]

回放演示 视频回放 文字回放

二、操作检测(已开源)

端侧实时操作行为检测功能,同样基于自研的操作行为标识指令以及语义化的操作行为策略描述方案(DSL),支持丰富的语义和灵活的策略配置。它可以帮助我们实现端侧场景化需求,未来还希望用在客服场景中来提升用户体验,创造更多用户价值。

当然我们相信它也有未被发掘的应用潜力,同样开源出来集思广益。

[Demo展示]

操作检测

三、数据可视化(逐步开放中..)

覆盖埋点全流程的移动端解决方案,包括埋点数据可视化范畴的多维度PV/UV热力图转化率漏斗页面停留时长等功能,以及埋点辅助范畴的测试工具。它的意义在于改变了大家日常看数据的方式,让原本就擅长使用数据的同学可以更便捷的用数据,让原本不擅长使用数据的同学开始喜欢用数据

使用手册

系列文章

微信交流群

由于群二维码的有效期仅为7天,故可搜索 HulkRong 加我微信入群,可备注:小桔棱镜社区用户。

TODO

详见 近期TODO

项目成员

负责人 Hulk(荣浩)

内部核心成员 Hulk(荣浩)EastWoodYangpengpeng(赵磊鹏)Kain(孙冬冬)张华朱少颖苍老师(张熠萌)戴立慧

协议

Apache-2.0 license

小桔棱镜 基于 Apache-2.0 协议进行分发和使用,更多信息参见 协议文件

Comments
  • iOS:presentViewController后,回放失败

    iOS:presentViewController后,回放失败

    问题1: 如果present一个导航栏控制器后,控制器里面添加一个按钮,点击按钮做dismiss操作,回放时失败; 看代码里面有单独对present的控制做处理,但是最终拿到的响应者为空,请问有方法解决吗?

    问题2: 如果在当前window上面添加一个vc.view,而不是直接添加一个view,此时回放也是同样失败,此问题有好的方案吗?

    opened by FirstDKS521 4
  • 关于如何使用的问题

    关于如何使用的问题

    你好,我是H5开发的,对于原生APP开发不太了解。想请教一下几个问题:

    1、这个操作行为回放是怎么做到的,是以视频的方式存放下来的还是怎么样? 2、如何将小桔棱镜应用到项目当中,生成的文字回放和操作行为回放是存放在哪里的,我们应该如何取到这些信息 3、听说后续会支持移动端H5,请问一下预估什么时候可以支持呢?

    盼回复,谢谢!

    opened by wenxuehai 3
  • iOS  Demo Error:  Undefined symbols :

    iOS Demo Error: Undefined symbols : "_OBJC_CLASS_$_WebViewController",

    Undefined symbols for architecture arm64:
      "_OBJC_CLASS_$_WebViewController", referenced from:
          objc-class-ref in DetailAViewController.o
          objc-class-ref in DetailViewController.o
    ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    发现是项目中没有引用 WebViewController 这个类啊,在 /iOS/DiDiPrismDemo/DiDiPrismDemo/ViewController/DetailViewController/ 目录下。

    希望修正~

    opened by iHTCboy 1
  • A android端Prism

    A android端Prism

    感谢大佬的开源给我们更好的开拓思维,小桔棱镜 Android SDK端现在最低是只支持到6.0系统、androidx,因为以前很多旧项目是使用support库开发最低要适配到5.0系统,整体升级迁移到androidx工作量比较大,而且不知道是否有其他不可控的问题,所以请问后期是否有考虑适配到5.0系统和支持使用使用support库呢

    opened by sheng930920 1
  • fix : 特殊场景下的获取视图的控制器数组

    fix : 特殊场景下的获取视图的控制器数组

    ....// 1. 上面方法中已经遍历了视图的所有的父控制器

    if (viewController.view.superview.prism_viewController) { ---> 2. 如果存在 "控制器的视图有父视图" NSArray<UIViewController*> *moreVC = [self getParentViewControllersOfView:viewController.view]; -->3. 那么这里就应该是去他的父视图中找父控制器

    opened by jianAjian 0
Releases(0.2.8)
Owner
DiDi
滴滴出行
DiDi
Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.

Codename One - Cross Platform Native Apps with Java or Kotlin Codename One is a mobile first cross platform environment for Java and Kotlin developers

Codename One 1.4k Jan 9, 2023
Ethereum Web3 implementation for mobile (android & ios) Kotlin Multiplatform development

Mobile Kotlin web3 This is a Kotlin MultiPlatform library that ... Table of Contents Features Requirements Installation Usage Samples Set Up Locally C

IceRock Development 32 Aug 26, 2022
An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile.

An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile. 项目架构主要分为原生系统层、Android/iOS业务SDK层、KMM SDK层、KMM业务逻辑SDK层、iOS sdkfra

libill 4 Nov 20, 2022
Location Service Manager for Kotlin Multiplatform Mobile iOS and android

Location Service Manager for Kotlin Multiplatform Mobile iOS and android Features Provides simple permission settings Dramatically reduce the amount o

LINE 55 Dec 10, 2022
Kotlin Multiplatform Mobile demo for Android and iOS - app for viewing Cat pictures

CatViewerDemo Android demo iOS demo Kotlin Multiplatform Mobile demo for Android and iOS. App for viewing Cat pictures from Cats API. This sample show

Martin Rajniak 111 Dec 18, 2022
A local storage management library for Kotlin Multiplatform Mobile iOS and android

A local storage management library for Kotlin Multiplatform Mobile iOS and android Features iOS and Android local storage in one interface Provides ge

LINE 20 Oct 30, 2022
Kotlin Multiplatform is an SDK for cross-platform mobile development, which enables teams to use the same business logic in both Android and iOS client applications.

Kotlin Multiplatform is an SDK for cross-platform mobile development, which enables teams to use the same business logic in both Android and iOS client applications.

Chris Russell 1 Feb 11, 2022
🍭 GithubSearchKMM - Github Repos Search - Android - iOS - Kotlin Multiplatform Mobile using Jetpack Compose, SwiftUI, FlowRedux, Coroutines Flow, Dagger Hilt, Koin Dependency Injection, shared KMP ViewModel, Clean Architecture

GithubSearchKMM Github Repos Search - Kotlin Multiplatform Mobile using Jetpack Compose, SwiftUI, FlowRedux, Coroutines Flow, Dagger Hilt, Koin Depend

Petrus Nguyễn Thái Học 50 Jan 7, 2023
Kotlin Multiplatform Mobile + Mobile Declarative UI Framework (Jetpack Compose and SwiftUI)

Kotlin Multiplatform Mobile + Mobile Declarative UI Framework (Jetpack Compose and SwiftUI)

Kotchaphan Muangsan 3 Nov 15, 2022
KMM RSS Reader: an open-source, mobile, cross-platform application built with Kotlin Multiplatform Mobile.

KMM RSS Reader This is an open-source, mobile, cross-platform application built with Kotlin Multiplatform Mobile. It's a simple RSS reader, and you ca

Kotlin 1.4k Jan 4, 2023
Crunch-Mobile - A Food Delivery Mobile App which uses Modern App Architecture Pattern, Firebase And a Simple Restful Api

Crunch-Mobile This is a Food Delivery Mobile App which uses Modern App Architect

Bright Ugwu 1 Jan 1, 2022
This is powerful android framework

FlairFramework This is an android framework for build complex application with different architectures (MVC ready/MVP/MVVM/MVI ets). It's create on to

Alexandr Minkin 31 Nov 29, 2021
The most complete and powerful data-binding library and persistence infra for Kotlin 1.3, Android & Splitties Views DSL, JavaFX & TornadoFX, JSON, JDBC & SQLite, SharedPreferences.

Lychee (ex. reactive-properties) Lychee is a library to rule all the data. ToC Approach to declaring data Properties Other data-binding libraries Prop

Mike 112 Dec 9, 2022
A lightweight, simple, smart and powerful Android routing library.

RxRouter Read this in other languages: 中文, English A lightweight, simple, smart and powerful Android routing library. Getting started Setting up the d

Season 323 Nov 10, 2022
A powerful Minecraft Server Software coming from the future

Mirai A powerful Minecraft Server Software coming from the future Mirai is ❗ under heavy development ❗ and contributions are welcome! Features 30% fas

Etil 354 Dec 30, 2022
⏰ A powerful and simple-to-use guilded wrapper made in Kotlin.

⏰ guilded-kt [WIP] A powerful yet simple-to-use guilded wrapper made entirely in Kotlin with supporting multiplatform. Take a look at an example of th

Gabriel 13 Jul 30, 2022
🎲 A powerful and simple-to-use guilded wrapper made in Kotlin.

?? deck [WIP] Deck is a powerful yet simple-to-use guilded wrapper made entirely in Kotlin with support to multiplatform. Implementating In case you'r

Gabriel 13 Jul 30, 2022
Kauth - Open-source powerful minecraft authorization plugin

KAuth KAuth is a minecraft plugin for offline-mode authorization on your server.

Viktor 1 Feb 17, 2022
AndroRAT is a tool designed to give the control of the android system remotely and retrieve informations from it.

AndroRAT is a tool designed to give the control of the android system remotely and retrieve informations from it. Androrat is a client/server application developed in Java Android for the client side and the Server is in Python.

Neeraj Singh 1.5k Dec 30, 2022