/**
 * 该模块是和原生部分有强交互的行为,需要了解一定的android  ios开发调用此模块的API<br>
 *     注:微协同不支持此接口
 *  <strong>
 *          页面需要导入的文件
 *          <ul>
 *              <li>cmp-app.js</li>
 *          </ul>
 *      </strong>
 * @module App
 * @subtitle 应用模块
 */

/**
 * app
 * @namespace cmp
 * @class app
 */

/**
 * 打开第三方app
 * @namespace cmp.app
 * @method openApp
 * @param {String} url 打开的地址
 * @example
 * ```
 * <script>
 *    cmp.app.openApp(url);
 * </script>
 * ```
 */

/**
 * 打开原生UI
 * @namespace cmp.app
 * @method openNativeUI
 * @example
 * ```
 * <script>
 *    cmp.app.openNativeUI({
 *        className:"",
 *        JID:"",
 *        data:"",
 *        success:function(){},
 *        error:function(){}
 *    });
 * </script>
 * ```
 */

/**
 * 下载应用包
 * @namespace cmp.app
 * @method downloadApp
 * @example
 * ```
 * <script>
 *    cmp.app.downloadApp({
 *        url: "",
 *           title: "",
 *           extData: null,
 *           progress: function () {
 *           },
 *           success: function () {
 *           },
 *           error: null
 *    });
 * </script>
 * ```
 */

/**
 * 获取应用下载列表
 * @namespace cmp.app
 * @method getDownloadAppList
 * @example
 * ```
 * <script>
 *    cmp.app.getDownloadAppList({
 *           url: "",
 *           success: function () {
 *           },
 *           error: null
 *    });
 * </script>
 * ```
 */

/**
 * 加载指定应用
 * @namespace cmp.app
 * @method loadApp
 * @param {Object} options 配置参数
 *       @param {Sting} options.appId 应用id
 *       @param {String} options.bundle_identifier 唯一id
 *       @param {String} options.bundle_name 应用名称
 *       @param {String} options.team 所属组
 *       @param {String} options.version 引用版本号
 *       @param {String} options.appType 应用类型 default(v5、m3标准应用)
 *       @param {String} options.entry 用于原生app的调用、h5的url地址
 *       @param {String} options.downloadUrl 原生app下载地址
 *       @param {String} options.parameters 打开原生应用、h5url地址的参数
 *       @param {String} options.iOSStatusBarStyle ios状态栏颜色0=黑色 1=白色
 *       @param {Function} options.success 成功回调
 *       @param {Function} options.error 失败回调
 * @example
 * ```
 * <script>
 *    cmp.app.loadApp({
 *           appId: "xxxx",
 *           bundle_identifier: "xaxaxa",
 *           bundle_name: "协同",
 *           team: "f1",
 *           version: "1.0",
 *           appType: "default",
 *           entry: "http://xxxxx",
 *           downloadUrl: "http://xxxxx",
 *           parameters: "{xxx:'xxxx'}",
 *           iOSStatusBarStyle: "1",
 *           success: function () {
 *           },
 *           error: function(){}
 *    });
 * </script>
 * ```
 */

/**
 * 删除指定应用
 * @namespace cmp.app
 * @method deleteApp
 * @param {Object} options 配置参数
 *       @param {Sting} options.appId 应用id
 *       @param {String} options.bundle_identifier 唯一id
 *       @param {String} options.bundle_name 应用名称
 *       @param {String} options.team 所属组
 *       @param {String} options.version 引用版本号
 *       @param {Function} options.success 成功回调
 *       @param {Function} options.error 失败回调
 * @example
 * ```
 * <script>
 *    cmp.app.deleteApp({
 *           appId: "xxxx",
 *           bundle_identifier: "xaxaxa",
 *           bundle_name: "协同",
 *           team: "f1",
 *           version: "1.0",
 *           success: function () {
 *           },
 *           error: function(){}
 *    });
 * </script>
 * ```
 */

/**
 * 获取js  api
 * @namespace cmp.app
 * @method getJSAPIUrl
 * @param {Object} options 配置参数
 *       @param {Sting} options.appId 应用id
 *       @param {String} options.serverVersion 服务器版本号
 *       @param {String} options.serverIdentifier 服务器的唯一标识
 *       @param {String} options.ownerId 用户id
 *       @param {Function} options.success 成功回调
 *       @param {Function} options.error 失败回调
 * @example
 * ```
 * <script>
 *    cmp.app.getJSAPIUrl({
 *           appId: "xxxx",
 *           serverVersion: "xaxaxa",
 *           serverIdentifier: "xxx",
 *           ownerId: "xxxx",
 *           success: function () {
 *           },
 *           error: function(){}
 *    });
 * </script>
 * ```
 */


/**
 * 获取预置应用Md5码
 * @namespace cmp.app
 * @method getPresetAppsMd5
 * @example
 * ```
 * <script>
 *    cmp.app.getPresetAppsMd5({
 *           success: function (result) {
 *               result = {"cmp":"11111", "m3_apps_login":"", "m3_apps_commons":""}
 *           },
 *           error: null
 *    });
 * </script>
 * ```
 */

/**
 * 获取应用下载列表版本号
 * @namespace cmp.app
 * @method getAppVersionList
 * @example
 * ```
 * <script>
 *    cmp.app.getAppVersionList({
 *           url: "",
 *           success: function () {
 *           },
 *           error: null
 *    });
 * </script>
 * ```
 */

/**
 * 获取App入口
 * @namespace cmp.app
 * @method getAppEntryUrl
 * @param {Object} options 配置参数
 *       @param {Sting} options.appId 应用id
 *       @param {String} options.version 引用版本号
 *       @param {Function} options.success 成功回调
 *       @param {Function} options.error 失败回调
 * @example
 * ```
 * <script>
 *    cmp.app.getAppEntryUrl({
 *           appId: "xxxx",
 *           version: "1.0",
 *           success: function () {
 *           },
 *           error: function(){}
 *    });
 * </script>
 * ```
 */

/**
 * 获取App信息
 * @namespace cmp.app
 * @method getAppInfo
 * @param {Object} options 配置参数
 *       @param {Sting} options.appId 应用id
 *       @param {String} options.version 引用版本号
 *       @param {Function} options.success 成功回调
 *       @param {Function} options.error 失败回调
 * @example
 * ```
 * <script>
 *    cmp.app.getAppInfo({
 *           appId: "xxxx",
 *           version: "1.0",
 *           success: function () {
 *           },
 *           error: function(){}
 *    });
 * </script>
 * ```
 */

/**
 * 获取本地资源路径
 * @namespace cmp.app
 * @method getLocalResourceUrl
 * @param {Object} options 配置参数
 *       @param {Sting} options.url 应用url
 *       @param {Function} options.success 成功回调
 *       @param {Function} options.error 失败回调
 * @example
 * ```
 * <script>
 *    cmp.app.getLocalResourceUrl({
 *           url: "xxxx",
 *           success: function () {
 *           },
 *           error: function(){}
 *    });
 * </script>
 * ```
 */


/**
 * 创建桌面一键应用
 * @namespace cmp.app
 * @method createDesktopAppLink
 * @param {Object} options 配置参数
 *      @param {String} options.displayName 桌面应用显示的名称
 *      @param {String} options.iconBase64Data 桌面应用显示图标
 *      @param {Object} options.options 应用配置参数
 *              @param {String} options.options.appId 应用id
 *              @param {String} options.options.version 应用版本
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.createDesktopAppLink({
 *         displayName:"M3",
 *         iconBase64Data:"data:image/png;base64:ajdkasjdask",
 *         options:{
 *            appId:"112312",
 *            version:"1.0.1"
 *         }
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 获取桌面应用的信息
 * @namespace cmp.app
 * @method getOpenDesktopAppOptions
 * @param {Object} options 配置参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.getOpenDesktopAppOptions({
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * ios状态栏颜色0=黑色 1=白色
 * @namespace cmp.app
 * @method setStatusBarStyleforiOS
 * @param {Object} options 配置参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.setStatusBarStyleforiOS({
 *        statusBarStyle:0,
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * ios状态栏颜色0=黑色 1=白色
 * @namespace cmp.app
 * @method sendAjaxByActiveState
 * @param {Object} options 配置参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.setStatusBarStyleforiOS({
 *        statusBarStyle:0,
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 特殊情况的请求,当active的状态改变后才触发该缓存下的请求(ios不进行这个适配)
 * @namespace cmp.app
 * @method sendAjaxByActiveState
 * @param {Object} options 配置参数
 *      @param {Object} options.hide active  hide状态的请求
 *          @param {Object} options.hide.header 请求header
 *          @param {Object} options.hide.url 请求url
 *          @param {Object} options.hide.data 请求参数
 *      @param {Object} options.wakeup active唤醒状态的请求
 *          @param {Object} options.wakeup.header 请求header
 *          @param {Object} options.wakeup.url 请求url
 *          @param {Object} options.wakeup.data 请求参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.sendAjaxByActiveState({
 *        params:{
 *           hide:{
 *              header:{},
 *              url:"xxxx",
 *              data:{}
 *           },
 *           wakeup:{
 *              header:{},
 *              url:"xxxx",
 *              data:{}
 *           }
 *        },
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * ios 设置桌面icon 数字
 * @namespace cmp.app
 * @method setApplicationIconBadgeNumber
 * @param {Object} options 配置参数
 *      @param {Number} options.badgeNumber数字角标
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.setApplicationIconBadgeNumber({
 *        badgeNumber:15,
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 清除应用缓存
 * @namespace cmp.app
 * @method clearCache
 * @param {Object} options 配置参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.clearCache({
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 获取缓存大小
 * @namespace cmp.app
 * @method getCacheLength
 * @param {Object} options 配置参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.getCacheLength({
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 杀进程退出app
 * @namespace cmp.app
 * @method exitApp
 * @param {Object} options 配置参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.exitApp({
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 提示设置应用权限
 * @namespace cmp.app
 * @method setPermission
 * @param {Object} options 配置参数
 *      @param {String} options.permissionTips 提示语
 *      @param {String} options.cancelText 取消按钮提示文字
 *      @param {String} options.toSetText 设置按钮提示文字
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.setPermission({
 *        permissionTips:"没有权限,请开启相关权限",
 *        cancelText:"取消",
 *        toSetText:"去设置",
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 隐藏启动页
 * @namespace cmp.app
 * @method hideStartPage
 * @param {Object} options 配置参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.hideStartPage({
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 打开第三方原生应用(如打开第三方视频会议app)
 * @namespace cmp.app
 * @method openThirdNative
 * @param {Object} options 配置参数
 *      @param {String} options.params 参数
 *      @param {String} options.appEnter app认证等
 *      @param {String} options.iosAppEntry ios入口信息
 *      @param {String} options.androidAppEntry android入口信息
 *      @param {String} options.androidDownloadUrl
 *      @param {String} options.iosDownloadUrl
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.openThirdNative({
 *        params:null,
 *        appEnter:"",
 *        iosAppEntry:"",
 *        androidAppEntry:"",
 *        androidDownloadUrl:"",
 *        iosDownloadUrl:"",
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */

/**
 * 权限插件
 * @namespace cmp.app
 * @method privilegeWrite
 * @param {Object} options 配置参数
 *      @param {String} options.values 参数
 *      @param {Function} options.success 成功后的回调
 *      @param {Function} options.error 失败后的回调
 * @example
 * ```
 * <script>
 *    cmp.app.privilegeWrite({
 *        values:{ hasColNew:true/false,xxx:true/false },
 *        success:function(result){
 *             //do something with result
 *        },
 *        error:function(error){
 *        }
 *    });
 * </script>
 * ```
 */
    
Top