热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UMENG相关

转自:http:blog.csdn.netxiangzilv1987articledetails7840582Android统计分析SDK使用指南1.建立App&#x

转自:http://blog.csdn.net/xiangzilv1987/article/details/7840582

Android 统计分析 SDK使用指南


1.建立App,下载SDKTop

登录你的帐号后,看到友盟的管理后台,点击"+添加新应用",进入新应用信息填写的页面。在新应用信息填写中,请尽量填写真实的信息。App建立成功后,可以获得该App的AppKey,以及最新的开发指南和SDK文件。可在这里下载SDK,包含开发文档,demo程序和jar包。

*Tips 
您可以通过友盟统计分析平台的特性节省重复建立App的时间。如果您要对App不同的发布渠道进行统计,不需要创建新App (请查看【使用分发渠道分析】),通过分发渠道分析,您可以更方便的对比数据。

 

2.实现基本的使用Top


  • 导入Analytics_Android_SDK_3.2.1.jar(简称SDK)下载地址:点击打开链接

下载最新版sdk的zip包,解压将其中的Analytics_Android_SDK_3.2.1.jar释放到本地目录,Eclipse用户右键您的工程根目录,选择Properties -> Java    Build Path     -> Libraries, 然后点击Add External JARs... 选择指向       Analytics_Android_SDK_3.2.1.jar   的路径,点击OK,即导入成功。 



此处为添加部分


1
2
3
4
5
6
7
8
9
10
11
12
13
<manifest……>
<application……>
    ……
<activity……/>
<meta-dataandroid:value&#61;"YOUR_APP_KEY"android:name&#61;"UMENG_APPKEY">meta-data>
application>
<uses-sdkandroid:minSdkVersion&#61;"4">uses-sdk>
<uses-permissionandroid:name&#61;"android.permission.ACCESS_NETWORK_STATE">uses-permission>
<uses-permissionandroid:name&#61;"android.permission.INTERNET">uses-permission>
<uses-permissionandroid:name&#61;"android.permission.READ_PHONE_STATE">uses-permission>
<uses-permissionandroid:name&#61;"android.permission.READ_LOGS">uses-permission>
manifest>


  • 添加代码
    • 添加引用: import com.mobclick.android.MobclickAgent
    • 注册 Activity: 在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context), 传入的参数为当前context的引用&#xff0c;这个方法将会自动地从AndroidManifest.xml文件里读取Appkey。 这里请不要将全局的application context传入。

      1
      2
      3
      4
      5
      publicvoidonResume() {
          super.onResume();
          MobclickAgent.onResume(this);
      }

    • 在每个Activity的onPause方法中调用MobclickAgent.onPause(Context), 只需传入一个参数当前activity的context.

      1
      2
      3
      4
      5
      publicvoidonPause() {
          super.onPause();
          MobclickAgent.onPause(this);
      }

      确保在所有的activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法&#xff0c;这两个调用将不会阻塞应用程序的主线程&#xff0c;也不会影响应用程序的性能。注意如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法&#xff0c;否则会造成重复统计(eg.使用TabHost、TabActivity、ActivityGroup时)。一个应用程序在多个activity之间连续切换时&#xff0c;将会被视为同一个session(启动)。 
      当用户两次使用之间间隔超过30秒时&#xff0c;将被认为是两个的独立的session(启动)&#xff0c;例如用户回到home&#xff0c;或进入其他程序&#xff0c;经过一段时间后再返回之前的应用。 在V3.1.1.1以上版本中我们提供了新的接口来自定义这个时间间隔&#xff0c;您只要调用&#xff1a;MobclickAgent.setSessionContinueMillis(long)传入适当的参数&#xff0c;就可以控制session重新启动时间&#xff0c;注意参数是以毫秒为单位的。 例如&#xff0c;如果您认为在60秒之内返回应用可视为同一次启动&#xff0c;超过60秒返回当前应用可视为一次新的启动&#xff0c;那么请写成MobclickAgent.setSessionContinueMillis(60000)。



 


  • 测试
    • 确认所需的权限都已经添加&#xff1a;INTERNET, READ_PHONE_STATE, (READ_LOGS, WRITE_EXTERNAL_STORAGE)
    • 确认APPKEY已经正确的写入Androidmanifest.xml
    • 确认所有的Activity中都调用了onResume和onPause方法
    • 确认测试手机(或者模拟器)已成功连入网络
    • 启动应用程序&#xff0c;几分钟之后您应该已经可以看到相应的报表.
    • 如果几分钟后报表中仍然没有收到数据&#xff0c;请与我们的技术支持联系 QQ 800083942 或者邮件到support&#64;umeng.com我们会尽快回复您的报表.


 

3.使用错误报告  Top


友盟统计分析工具&#xff0c;还可以帮助您捕捉用户在使用应用程序过程中出现的异常退出(FC), 并在应用程序下次启动时将错误报告发送给服务器。错误报告包含应用程序版本&#xff0c;操作系统版本和设备型号以及程序出现异常时的Stacktrace&#xff0c;这些数据将帮助您修正应用程序的Bug。我们提供两种方式发送 错误报告&#xff0c;一种是我们自动捕获的错误信息&#xff0c;另外一种是开发者自己传递的错误信息
前者&#xff0c;您需要在AndroidManifest.xml里面添加权限android.permission.READ_LOGS&#xff0c;并且在程序的Main Activity (应用程序入口)的onCreate方法里调用MobclickAgent.onError(Context):


1
2
3
4
5
6
publicvoidonCreate(Bundle savedinstanceState) {
    super.onCreate(savedInstanceState);
    MobclickAgent.onError(this);
    ...
}

后者需要开发者调用 MobclickAgent.reportError(Context context,String error) 在第二个参数中传入&#xff0c;自己扑捉的错误信息。


您可以在我的产品页面&#xff0c;开发者工具-错误分析标签中&#xff0c;查看错误报告。

 


4.使用自定义事件Top


除了基本统计分析功能外&#xff0c;我们还支持您自定义的事件分析&#xff0c;例如您可以统计游戏中通过不同关卡的人数&#xff0c;广告的点击次数或者视频被播放的次数等等。 使用自定义事件功能请先在网站应用管理后台(设置->编辑自定义事件)中添加相应的自定义事件后&#xff0c;服务器才会对相应的自定义事件请求进行处理。 
这里我们将提供几个简单而通用的接口&#xff1a;

  • 简单事件


在您希望发送事件报告的代码段&#xff0c;调用如下方法就可以向服务器发送事件记录


1
MobclickAgent.onEvent(Context context, String event_id);


统计event_id对应事件的发生次数&#xff0c;变化趋势&#xff0c;例如广告点击&#xff0c;短信数量等等。参数context为当前context的引用。event_id为当前统计的事件ID&#xff0c;注意event_id中不要加空格或其他 的转义字符


比如&#xff0c;在口袋微博应用程序里一条微博被转发定义为事件"Reply"。那么在点击转发的函数里调用 MobclickAgent.onEvent(this, "Reply") 通知服务器一个转发的事件。




Reply事件分析图表示例

 

  • 多标签事件


1
MobclickAgent.onEvent(Context context, String event_id, String  label);


除了能够统计event_id所对应事件的发生次数&#xff0c;变化趋势外&#xff0c;还能统计事件中具体标签所占的比例。label为当前标签&#xff0c;同样这里的event_id字符串中也不能有空格。
比如&#xff0c;在口袋微博程序中&#xff0c;我们定义了一个发布微博的多标签事件"Publish"&#xff0c;对应的发布内容有"Text"&#xff08;发布文本&#xff09;,"Pic0"&#xff08;发小图&#xff09;,"Pic1"&#xff08;发中图&#xff09;&#xff0c;"Pic2"(发大图),来对应不同的发布内容&#xff0c;这样我们不仅可以记录Publish事件的点击数量还可以看到不同内容对应的比例。 
多标签事件分析图表示例 

 

  • 事件累计

在应用程序中某些自定义事件可能会被频繁触发&#xff0c;例如用户点击某个按钮。开发者可以在程序中维护一个计数器&#xff0c;这样某个事件被多次触发但只需要生成一个消息&#xff0c;这个消息中包括该事件被触发的次数。为了支持这个功能&#xff0c;这里我们简单重载了之前的两个接口&#xff1a;


MobclickAgent.onEvent(Context context, String event_id, int acc);
MobclickAgent.onEvent(Context context, String event_id, String label, int acc)


参数acc是对应事件 &#xff08;和对应标签&#xff09;被触发的次数。

 


5.使用分发渠道分析Top


有时需要统计应用程序的分发渠道&#xff0c;例如有多少用户来从联想乐园下载了您的应用,又有多少用户通过Google android market下载到您的应用程序。您只需要在AndroidManifest.xml里添加meta-data&#xff0c;并将 value属性修改为对应的发布渠道名。


1
2
3
4
5
<application……>
    <activity……/>
    <meta-dataandroid:value&#61;"Channel ID" android:name&#61;"UMENG_CHANNEL"/>
application>


当然&#xff0c;这需要您在不同渠道发布应用程序时&#xff0c;重新编译打包。 
注意


  • 不要改变&#39;UMENG_CHANNEL&#39;&#xff0c;修改&#39;Channel ID&#39;为您的渠道名称&#xff0c;注意不能是纯数字(eg.value&#61;"AndroidMarket")。
  • 每台设备只记录第一次统计到的渠道&#xff0c;您如果在测试的时候发现渠道统计到的设备数量不增加&#xff0c;很可能是因为您用同一个设备修改过渠道号。您换一台设备测试即可。


6.使用应用程序更新提醒 Top


这个功能将帮助您把新版应用程序推送给用户&#xff0c;您只需要:

  • 将zip包中layout文件夹下的umeng_analyse_download_notification.xml和values、values-en文件夹下的umeng_analyse_strings.xml复制到对应的文件夹下&#xff0c;此XML文件的作用是绘制状态栏里的下载进度条和多语言支持。
  • 在应用程序的入口Activity里的OnCreate() 方法中调用 


 

1
2
3
4
5
publicvoidonCreate(Bundle  savedInstanceState) {
    super.onCreate(savedInstanceState);
    MobclickAgent.update(this);
}


  • 每次更新应用程序&#xff0c;您只需要修改VersionCode&#xff0c;把应用程序的apk文件上传到友盟。MobclickAgent.update方法会判断是否有新版应用程序&#xff0c;如果发现可更新的应用程序安装包&#xff0c;会提示用户是否更新。用户选择更新后&#xff0c;安装包会在后台下载自动安装更新。&#xff08;按照version code来检测是否需要更新&#xff09; 
    此功能需要添加权限 android.permission.WRITE_EXTERNAL_STORAGE&#xff0c;考虑到用户流程的限制&#xff0c;目前我们默认在Wi-Fi接入情况下才进行自动提醒。如需要在其他网络环境下进行更新自动提醒&#xff0c;则请添加以下代码&#xff1a;

     

    1
    MobclickAgent.setUpdateOnlyWifi(false);



  • 同时&#xff0c;我们提供了一个判断下载状态的接口MobclickAgent.isDownloadingAPK() 返回boolean 类型的值&#xff0c;true表示正在下载。


  • 如果程序想自己处理更新可以按如下步骤&#xff0c;设置updateAutoPopup&#61; false&#xff0c;我们将禁止主动弹框&#xff0c;实现更新监听接口&#xff0c;处理更新事件&#xff1a;

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    MobclickAgent.update(this);
    MobclickAgent.updateAutoPopup&#61;false;
    MobclickAgent.setUpdateListener(newUmengUpdateListener(){
    &#64;Override
    publicvoidonUpdateReturned(intarg) {
        switch(arg){
        case0:                //has update
            MobclickAgent.showUpdateDialog(DemoActivity.this);
            Log.i(TAG,"show dialog");
            break;
        case1:                //has no update
            Toast.makeText(getParent(),"has no update", Toast.LENGTH_SHORT).show();
            break;
        case2:                //none wifi
            Toast.makeText(getParent(),"has no update", Toast.LENGTH_SHORT).show();
            break;
        case3:                //time out
            Toast.makeText(getParent(),"time out", Toast.LENGTH_SHORT).show();
            break;
        }
    }
    });



  • 按渠道更新功能: 需要开发者在网站上按照渠道添加对应的更新包&#xff0c;渠道更新的规则是&#xff1a; SDK检测本地安装的软件对应的渠道&#xff0c;然后连接服务器检测更新&#xff0c;如果服务器上有对应渠道的更新包 则选择此更新包并返回提示&#xff0c;如果服务器上没有对应渠道的更新包但有默认的更新包&#xff0c;则选择默认的 更新包并返回提示&#xff0c;如果服务器上没有默认的更新包&#xff0c;但是有其他渠道的更新包&#xff0c;将不会有更新提醒。 
  • 按天时间间隔更新功能: 通过对update&#xff08;Context&#xff09;函数的简单重载&#xff0c;我们提供了一个按时间间隔更新的接口update&#xff08;Content, long&#xff09;&#xff0c;实现按一定的时间间隔进行更新&#xff0c;比如实现按天更新&#xff0c;只要传作如下调用&#xff1a;update(context, 1000*60*60*24),注意传入的参数&#xff0c;是以毫秒为单位的。这样在下次更新的时候&#xff0c;我们会先检查上次的更新时间&#xff0c;如果间隔超出了设定的值&#xff0c;我们才会再次提示更新。


 

7.使用用户反馈收集 Top


来体验独立的友盟反馈组件吧&#xff01;它会给您 提供更多的可定制功能。

除了可以通过统计报表&#xff0c;自定义事件等方式了解到用户的使用情况之外&#xff0c;友盟可以帮助开发者收集到最直观的用户反馈。集成用户反馈模块&#xff0c;您只需要:


  • 将zip包里的资源文件(layout、values、values-en、drawable)复制到res对应的文件夹下,您可以更改资源但是请不要更改文件名和资源ID。 并在标签中添加新的activity :


1
2
3
4
<activityandroid:name&#61;"com.feedback.ui.SendFeedback"android:windowSoftInputMode&#61;"adjustResize">activity
<activityandroid:name&#61;"com.feedback.ui.FeedbackConversations">activity
<activityandroid:name&#61;"com.feedback.ui.FeedbackConversation"android:configChanges&#61;"keyboard">activity>


  • 代码中启用Feedback模块&#xff0c;调用下面函数进入反馈界面&#xff1a;


1
UMFeedbackService.openUmengFeedbackSDK(this);


  • 当开发者回复用户反馈后&#xff0c;如果需要提醒用户&#xff0c;请在应用程序的入口Activity的OnCreate()方法中下添加以下代码&#xff1a;


1
UMFeedbackService.enableNewReplyNotification(this, NotificationType.AlertDialog);

方法第一个参数类型为&#xff1a;Context&#xff0c;第二个参数为枚举类型&#xff0c;可选值为NotificationType.AlertDialog 或NotificationType.NotificationBar&#xff0c;分别对应两种不同的提示方式&#xff1a; AlertDialog 以 AlertDialog方式提醒用户&#xff0c;NotificationBar 则使用NotificationBar 方式提醒用户。

若调用该接口&#xff0c;反馈模块将在你程序启动后于后台检查是否有新的来自开发者的回复&#xff0c;若有&#xff0c;我们将提醒用户&#xff0c;若无&#xff0c;则不会打扰用户。

你也可以选择不调用该接口&#xff0c;这样我们会在用户进入反馈界面后&#xff0c;再去检查是否存在新的回复。


  • 代码示例&#xff1a;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);            
UMFeedbackService.enableNewReplyNotification(this,0);
}
publicbooleanonCreateOptionsMenu(Menu menu) {
    //一般可以在OptionsMenu中添加一个Item,用于作为反馈界面的入口
menu.add(0,0,0,"feedback");
...
returntrue;
}
publicbooleanonOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
       case0:
         // 调用反馈提供的接口&#xff0c;进入反馈界面
UMFeedbackService.openUmengFeedbackSDK(this);
    returntrue;
       default:
      ...
 }
 }


  • 下面是用户反馈界面的默认样式&#xff0c;您也可以通过修改资源文件来调整样式&#xff0c;不过需要注意的是&#xff0c;不要修改任何元素的ID和文件名.


  • 启动时发送&#xff08;推荐使用&#xff09;


应用程序每次只会在启动时会向服务器发送一次消息&#xff0c;在应用程序过程中产生的所有消息(包括自定义事件和本次使用时长)都会在下次启动时候发送。 如果应用程序启动时处在不联网状态&#xff0c;那么消息将会缓存在本地&#xff0c;下次再尝试发送。 发送策略默认为启动时发送。


  • 实时发送


应用程序产生每条消息(包括启动信息&#xff0c;自定义消息&#xff0c;退出消息)时都会立即发送到服务器。


  • 设置每日单次发送

设置每日单次发送后&#xff0c;当日第二次及之后的启动将不再发送数据&#xff0c;未发送的数据将缓存在手机&#xff0c;等待次日&#xff08;或他日&#xff09;发送。

注&#xff1a;由于不同应用的用户使用行为不同&#xff0c;数据发送会有相应的延迟。

  • 设置发送模式



新版本的SDK支持在线动态配置发送策略&#xff0c;您需要在onCreate&#xff08;&#xff09;函数中调用MobclickAgent.updateOnlineConfig(this);方法&#xff0c;这样我们就可以在程序启动的时候&#xff0c;联网检测动态配置的发送策略了。详细配置见下面的9.使用在线配置功能。

旧版本SDK&#xff08;2.3以前版本&#xff09;发送模式设置需要在onCreate&#xff08;&#xff09;函数中调用MobclickAgent.setReportPolicy(int policy)&#xff0c;一旦应用发布就不能再更改,我们推荐使用最新版本的SDK。如果您需要更灵活的发送模式&#xff0c; 请发邮件至support&#64;umeng.com&#xff0c;我们会尽快回复您。 


9.使用在线配置功能Top

这个功能目前可以帮你在网站上动态配置两种类型的参数&#xff1a;

  • 数据发送策略
  • 自定义key-value型的键值对

在程序的入口Activity的OnCreate()方法中调用

1
2
3
4
publicvoidonCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  MobclickAgent.updateOnlineConfig(this);
}

这样程序启动的时候&#xff0c;我们将联网检测您的在线配置&#xff0c;并将这些信息保存在本地&#xff0c;等待下此启动的时候&#xff0c;我们将按照保存的配置来设定发送策略&#xff0c;您可以通过下面的函数读取您的自定义参数&#xff1a;

1
String MobclickAgent.getConfigParams(Context c, String key);

参数为 Context 和 在网站上编辑好的key&#xff0c; 返回值是对应的 value 如果没有读到相应的value将返回空字符串("").

同时&#xff0c;我们提供了在线参数回调接口&#xff0c;注意此接口只在在线参数有变化的时候才会回调&#xff0c;实现此接接口&#xff1a;

1
2
3
4
5
6
MobclickAgent.updateOnlineConfig(this);
MobclickAgent.setOnlineConfigureListener(newUmengOnlineConfigureListener(){
      &#64;Override
      publicvoidonDataReceived(JSONObject data) {
      }
});

在没有取到在线配置的发送策略的情况下&#xff0c;会使用默认的发送策略&#xff0c;通过下面函数设置&#xff08;如果不设置的话&#xff0c;我们默认为启动时发送&#xff09;

1
MobclickAgent.setDefaultReportPolicy(this, ReportPolicy.BATCH_AT_LAUNCH);

在线参数设置界面在 开发工具->参数配置 如下图&#xff1a;

数据发送策略设置界面在 统计分析->设置->发送策略 如下图




推荐阅读
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 本文深入探讨了如何利用Maven高效管理项目中的外部依赖库。通过介绍Maven的官方依赖搜索地址(),详细讲解了依赖库的添加、版本管理和冲突解决等关键操作。此外,还提供了实用的配置示例和最佳实践,帮助开发者优化项目构建流程,提高开发效率。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 今天我开始学习Flutter,并在Android Studio 3.5.3中创建了一个新的Flutter项目。然而,在首次尝试运行时遇到了问题,Gradle任务 `assembleDebug` 执行失败,退出状态码为1。经过初步排查,发现可能是由于依赖项配置不当或Gradle版本不兼容导致的。为了解决这个问题,我计划检查项目的 `build.gradle` 文件,确保所有依赖项和插件版本都符合要求,并尝试更新Gradle版本。此外,还将验证环境变量配置是否正确,以确保开发环境的稳定性。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
author-avatar
米蘭王妃级_608
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有