├── .gitignore ├── LICENSE ├── README.md ├── docs ├── .vuepress │ ├── .gitignore │ ├── components │ │ └── md │ │ │ ├── banner.vue │ │ │ └── virtual.vue │ ├── config.js │ ├── config │ │ ├── copy.js │ │ ├── footer.js │ │ ├── i18n │ │ │ └── index.js │ │ ├── navbar.js │ │ ├── redirectRouter.js │ │ ├── searchPage.js │ │ ├── siderbar │ │ │ ├── AppDocs.js │ │ │ ├── MPSdk.js │ │ │ └── index.js │ │ └── toc.js │ ├── markdown │ │ ├── createMarkdownArray.js │ │ ├── createSidebar.js │ │ ├── createSiteMap.js │ │ ├── header.js │ │ ├── img-add-attrs.js │ │ ├── normallizeLink.js │ │ └── translate.js │ ├── public │ │ ├── web-view-forum.html │ │ └── web-view.html │ └── utils │ │ └── index.js ├── 5PlusDocs │ └── iosM.md ├── AppDocs │ ├── FAQ │ │ ├── android.md │ │ ├── ios.md │ │ └── jsframeworkdeclare.md │ ├── README.md │ ├── _sidebar.md │ ├── download │ │ ├── android.md │ │ ├── historyRelease │ │ │ ├── androidAlpha.md │ │ │ └── androidRelease.md │ │ ├── ios.md │ │ ├── update_history_iOS_alpha.md │ │ └── update_history_iOS_release.md │ ├── extends │ │ ├── android.md │ │ └── iOS.md │ ├── importfeproject │ │ ├── android.md │ │ ├── export.md │ │ └── ios.md │ ├── package │ │ ├── android.md │ │ └── ios.md │ ├── usemodule │ │ ├── android.md │ │ ├── androidModuleConfig │ │ │ ├── android_Library.md │ │ │ ├── facialRecognitionVerify.md │ │ │ ├── geolocation.md │ │ │ ├── map.md │ │ │ ├── oauth.md │ │ │ ├── others.md │ │ │ ├── pay.md │ │ │ ├── push.md │ │ │ ├── share.md │ │ │ ├── speech.md │ │ │ ├── statistic.md │ │ │ ├── uniad.md │ │ │ ├── uts.md │ │ │ └── x5.md │ │ └── iOSModuleConfig │ │ │ ├── common.md │ │ │ ├── dependentLibrary.md │ │ │ ├── facialRecognitionVerify.md │ │ │ ├── geolocation.md │ │ │ ├── livepusher.md │ │ │ ├── map.md │ │ │ ├── oauth.md │ │ │ ├── otherModule │ │ │ └── appleOauth.md │ │ │ ├── pay.md │ │ │ ├── push.md │ │ │ ├── share.md │ │ │ ├── speech.md │ │ │ ├── statistic.md │ │ │ ├── uiwebview.md │ │ │ └── uniad.md │ └── usesdk │ │ ├── android.md │ │ ├── appkey.md │ │ ├── iOSReadMe.md │ │ ├── ios.md │ │ ├── iosOther │ │ ├── 3DTouch.md │ │ └── project.md │ │ └── useHBuilderHello.md ├── NativePlugin │ ├── API │ │ ├── android.md │ │ └── ios.md │ ├── README.md │ ├── _sidebar.md │ ├── course │ │ ├── android.md │ │ ├── ios.md │ │ └── package.md │ ├── offline_package │ │ ├── android.md │ │ └── ios.md │ └── use │ │ ├── faq.md │ │ ├── use.md │ │ └── use_local_plugin.md ├── README.md ├── UniMPDocs │ ├── API │ │ ├── android-v2.md │ │ ├── android.md │ │ └── ios.md │ ├── Extension │ │ ├── android.md │ │ └── ios.md │ ├── FAQ │ │ ├── android.md │ │ ├── cocoapods.md │ │ └── ios.md │ ├── SDKDownload │ │ ├── android.md │ │ ├── ios.md │ │ └── opensource.md │ ├── Sample │ │ ├── android-v2.md │ │ ├── android.md │ │ ├── close.md │ │ ├── event.md │ │ ├── ios.md │ │ ├── menubutton.md │ │ └── start.md │ ├── UseModule │ │ ├── android │ │ │ ├── android.md │ │ │ ├── geolocation.md │ │ │ ├── livepusher.md │ │ │ ├── map.md │ │ │ ├── oauth.md │ │ │ ├── payment.md │ │ │ ├── share.md │ │ │ ├── speech.md │ │ │ ├── umstatistic.md │ │ │ └── x5.md │ │ └── ios │ │ │ ├── dependentLibrary.md │ │ │ ├── geolocation.md │ │ │ ├── ios.md │ │ │ ├── livepusher.md │ │ │ ├── map.md │ │ │ ├── oauth.md │ │ │ ├── payment.md │ │ │ ├── push.md │ │ │ ├── share.md │ │ │ ├── speech.md │ │ │ └── umstatistic.md │ └── UseSdk │ │ ├── android.md │ │ └── ios.md └── _sidebar.md ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | docs/.vuepress/dist 3 | .DS_Store 4 | **/sitemap.xml 5 | dist -------------------------------------------------------------------------------- /docs/.vuepress/.gitignore: -------------------------------------------------------------------------------- 1 | dist -------------------------------------------------------------------------------- /docs/.vuepress/components/md/virtual.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 50 | -------------------------------------------------------------------------------- /docs/.vuepress/config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const { slugify } = require('@vuepress/shared-utils') 3 | const highlight = require('@vuepress/markdown/lib/highlight') 4 | const translatePlugin = require('./markdown/translate') 5 | const headerPlugin = require('./markdown/header') 6 | const createSidebar = require('./markdown/createSidebar') 7 | const { simplifySlugText } = require('./utils') 8 | const copyOptions = require('./config/copy'); 9 | 10 | const config = { 11 | theme: 'vuepress-theme-uniapp-official', 12 | title: 'uni小程序SDK', 13 | head: [ 14 | ['link', { 15 | rel: 'shortcut icon', 16 | type: 'image/x-icon', 17 | href: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-a90b5f95-90ba-4d30-a6a7-cd4d057327db/d23e842c-58fc-4574-998d-17fdc7811cc3.png?v=1556263038788' 18 | }] 19 | ], 20 | locales: { 21 | '/': { 22 | lang: 'zh-CN', 23 | } 24 | }, 25 | themeConfig: { 26 | titleLogo: 'https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativesupport@2x.png', 27 | logo: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/5a7f902b-21a7-4822-884f-925219eacc4b.png', 28 | // TODO use plugin/theme 29 | sidebar: createSidebar(), 30 | sidebarDepth: 0, 31 | nextLinks: false, 32 | prevLinks: false, 33 | // TODO use theme 34 | repo: 'dcloudio/uni-app', 35 | docsRepo: 'https://gitee.com/dcloud/native-docs', 36 | docsBranch: 'master', 37 | docsDir: 'docs', 38 | editLinks: true, 39 | editLinkText: '帮助我们改善此页面!', 40 | lastUpdated: '上次更新', 41 | isDevelopment: process.env.NODE_ENV === 'development', 42 | algolia: { 43 | apiKey: '2fdcc4e76c8e260671ad70065e60b2e7', 44 | indexName: 'zh-uniapp', 45 | appId: 'PQIR5NL8CZ', 46 | searchParameters: { hitsPerPage: 50 } 47 | } 48 | }, 49 | markdown: { 50 | // toc: { includeLevel: [1, 2, 3, 4] }, 51 | slugify(str) { 52 | if (typeof str !== 'string') return '' 53 | 54 | let slug = str 55 | if (slug.includes('@')) { 56 | let array = slug.split('@') 57 | slug = array.length > 1 ? array[array.length - 1] : str 58 | } else { 59 | slug = simplifySlugText(slug.toLowerCase()).trim() 60 | } 61 | return slugify(slug) 62 | }, 63 | extractHeaders: ['h1', 'h2', 'h3', 'h4'], 64 | chainMarkdown(config) { 65 | const extensionMap = { 66 | uts: 'ts', 67 | uvue: 'vue', 68 | 'objective-c': 'objc' 69 | } 70 | config.options.highlight((str, lang) => { 71 | const extension = extensionMap[lang.toLowerCase()] 72 | return highlight(str, extension || lang) 73 | }) 74 | 75 | config 76 | .plugin('translate') 77 | .use(translatePlugin) 78 | .end() 79 | .plugin('convert-header') 80 | .use(headerPlugin) 81 | .end() 82 | .plugin('normallize-link') 83 | .use(require('./markdown/normallizeLink')) 84 | .end() 85 | .plugin('img-add-attrs') 86 | .use(require('./markdown/img-add-attrs')) 87 | } 88 | }, 89 | chainWebpack(config, isServer) { 90 | config.resolve.alias.set( 91 | '@theme-config', 92 | path.resolve(process.cwd(), 'docs/.vuepress/config') 93 | ) 94 | }, 95 | plugins: [ 96 | ["vuepress-plugin-juejin-style-copy", copyOptions] 97 | ], 98 | /** 99 | * 100 | * @param {string} path path: js 资源文件路径 101 | * @param {string} type type: 资源文件类型,取值有 script 等 102 | * @returns 103 | */ 104 | shouldPrefetch: (path, type) => { 105 | if (type === 'script') return path.includes('vendors~') || path.includes('layout-') || path.includes('index.') 106 | return false 107 | } 108 | } 109 | 110 | module.exports = config 111 | -------------------------------------------------------------------------------- /docs/.vuepress/config/copy.js: -------------------------------------------------------------------------------- 1 | // 此处需要使用 commonjs 2 | 3 | module.exports = { 4 | copyText: '复制代码', 5 | tip: { content: "复制成功", title: "" }, 6 | visibleTip: true, 7 | } -------------------------------------------------------------------------------- /docs/.vuepress/config/footer.js: -------------------------------------------------------------------------------- 1 | export default { 2 | footNavList: [ 3 | { 4 | title: '开发产品', 5 | content: [ 6 | { 7 | subTitle: 'HBuilderX', 8 | url: 'https://www.dcloud.io/hbuilderx.html', 9 | }, 10 | { 11 | subTitle: 'uni-app', 12 | url: 'https://uniapp.dcloud.net.cn/', 13 | }, 14 | { 15 | subTitle: 'uni-app x', 16 | url: 'https://doc.dcloud.net.cn/uni-app-x/', 17 | }, 18 | { 19 | subTitle: 'uniCloud', 20 | url: 'https://doc.dcloud.net.cn/uniCloud/', 21 | }, 22 | { 23 | subTitle: 'uniMPsdk', 24 | url: 'https://nativesupport.dcloud.net.cn/', 25 | }, 26 | { 27 | subTitle: '5+Runtime', 28 | url: 'https://www.dcloud.io/runtime.html', 29 | }, 30 | { 31 | subTitle: 'wap2app', 32 | url: 'https://www.dcloud.io/wap2app.html?platform=wap2app', 33 | }, 34 | { 35 | subTitle: 'MUI', 36 | url: 'https://www.dcloud.io/mui.html', 37 | }, 38 | { 39 | subTitle: 'uni-id', 40 | url: 'https://uniapp.dcloud.net.cn/uniCloud/uni-id', 41 | }, 42 | { 43 | subTitle: 'uni-cdn', 44 | url: 'https://doc.dcloud.net.cn/uniCloud/uni-cdn/intro.html', 45 | }, 46 | { 47 | subTitle: 'uni-pay', 48 | url: 'https://doc.dcloud.net.cn/uniCloud/uni-pay/uni-app.html', 49 | }, 50 | { 51 | subTitle: 'uni-push', 52 | url: 'https://uniapp.dcloud.net.cn/unipush', 53 | }, 54 | { 55 | subTitle: 'uni一键登陆', 56 | url: 'https://uniapp.dcloud.io/univerify', 57 | }, 58 | { 59 | subTitle: 'uni实人认证', 60 | url: 'https://uniapp.dcloud.net.cn/uniCloud/frv/intro.html', 61 | }, 62 | { 63 | subTitle: 'sms', 64 | url: 'https://uniapp.dcloud.net.cn/uniCloud/send-sms', 65 | }, 66 | { 67 | subTitle: 'uni-starter', 68 | url: 'https://ext.dcloud.net.cn/plugin?id=5057', 69 | }, 70 | { 71 | subTitle: 'uni-admin', 72 | url: 'https://uniapp.dcloud.net.cn/uniCloud/admin', 73 | }, 74 | { 75 | subTitle: 'uni-upgrade-center', 76 | url: 'https://uniapp.dcloud.io/uniCloud/upgrade-center', 77 | }, 78 | { 79 | subTitle: 'uni-im', 80 | url: 'https://uniapp.dcloud.net.cn/uniCloud/uni-im', 81 | }, 82 | { 83 | subTitle: 'uni-ai', 84 | url: 'https://uniapp.dcloud.net.cn/uniCloud/uni-ai', 85 | }, 86 | { 87 | subTitle: 'uni-cms', 88 | url: 'https://uniapp.dcloud.net.cn/uniCloud/uni-cms', 89 | }, 90 | { 91 | subTitle: 'uniCloud-map', 92 | url: 'https://doc.dcloud.net.cn/uniCloud/unicloud-map.html' 93 | }, 94 | { 95 | subTitle: 'uni-search', 96 | url: 'https://ext.dcloud.net.cn/plugin?id=3851', 97 | } 98 | ], 99 | }, 100 | ], 101 | aboutusList: [ 102 | { 103 | title: '运营产品', 104 | content: [ 105 | { 106 | subTitle: 'uni-ad', 107 | url: 'https://uniad.dcloud.net.cn/login', 108 | }, 109 | { 110 | subTitle: 'uni统计', 111 | url: 'https://tongji.dcloud.net.cn/', 112 | }, 113 | { 114 | subTitle: 'uni发行', 115 | url: 'https://www.dcloud.io/dportal.html', 116 | }, 117 | { 118 | subTitle: 'uni安全专题', 119 | url: 'https://uniapp.dcloud.net.cn/tutorial/safe.html', 120 | }, 121 | ], 122 | }, 123 | /* { 124 | 'title': '', 125 | 'content': [] 126 | }, */ 127 | { 128 | title: '开发者服务', 129 | content: [ 130 | { 131 | subTitle: '问答社区', 132 | url: 'https://ask.dcloud.net.cn/explore/', 133 | }, 134 | { 135 | subTitle: '开发者后台', 136 | url: 'https://dev.dcloud.net.cn/', 137 | }, 138 | ], 139 | }, 140 | { 141 | title: '技术文档', 142 | content: [ 143 | { 144 | subTitle: 'uni-app文档', 145 | url: 'https://uniapp.dcloud.io/', 146 | }, 147 | { 148 | subTitle: 'uniCloud文档', 149 | url: 'https://uniapp.dcloud.io/uniCloud/README', 150 | }, 151 | { 152 | subTitle: '原生开发者支持文档', 153 | url: 'https://nativesupport.dcloud.net.cn/', 154 | }, 155 | { 156 | subTitle: 'HBuilder文档', 157 | url: 'https://hx.dcloud.net.cn/', 158 | }, 159 | ], 160 | }, 161 | { 162 | title: '生态服务', 163 | content: [ 164 | { 165 | subTitle: '插件市场', 166 | url: 'https://ext.dcloud.net.cn/', 167 | }, 168 | { 169 | subTitle: 'OAuth用户开放平台', 170 | url: 'https://open.dcloud.net.cn/pages/login/login', 171 | }, 172 | ], 173 | }, 174 | ], 175 | aboutus: { 176 | title: '关于我们', 177 | content: [ 178 | { 179 | subTitle: 'DCloud官网', 180 | url: 'https://dcloud.io/', 181 | }, 182 | { 183 | subTitle: '案例', 184 | url: 'https://uniapp.dcloud.io/case', 185 | }, 186 | { 187 | subTitle: '需求墙', 188 | url: 'https://dev.dcloud.net.cn/wish/?channel=uniapp', 189 | }, 190 | { 191 | subTitle: '许可协议', 192 | url: 'https://ask.dcloud.net.cn/article/35623', 193 | }, 194 | { 195 | subTitle: '加入我们', 196 | url: 'https://www.dcloud.io/hr/', 197 | }, 198 | { 199 | subTitle: '赞助我们', 200 | url: 'https://dev.dcloud.net.cn/sponsor/', 201 | }, 202 | ], 203 | }, 204 | concatus: { 205 | title: '联系我们', 206 | content: [ 207 | { 208 | subTitle: '商务合作:bd@dcloud.io', 209 | url: 'mailto:bd@dcloud.io', 210 | }, 211 | { 212 | subTitle: '广告合作:uniad@dcloud.io', 213 | url: 'mailto:uniad@dcloud.io', 214 | }, 215 | ], 216 | }, 217 | domainImg: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/jgwab.png', 218 | beian: 219 | 'http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802035340', 220 | }; 221 | -------------------------------------------------------------------------------- /docs/.vuepress/config/i18n/index.js: -------------------------------------------------------------------------------- 1 | export const LOCALE_ZH_HANS = 'zh-CN' 2 | export const LOCALE_EN = 'en-US' -------------------------------------------------------------------------------- /docs/.vuepress/config/navbar.js: -------------------------------------------------------------------------------- 1 | /** 2 | * text 3 | * target 4 | * link // 有协议时是外链 5 | * items 6 | * type // link、links。 7 | * rel 8 | * needOutbound // 是否显示外链图标 9 | */ 10 | export const navbar = [ 11 | { 12 | text: 'uni小程序 SDK', 13 | type: 'link', 14 | link: '/' 15 | }, 16 | { 17 | text: 'App离线打包', 18 | type: "link", 19 | link: '/AppDocs/' 20 | }, 21 | { 22 | text: '原生插件开发', 23 | type: "link", 24 | link: '/NativePlugin/' 25 | } 26 | ] 27 | 28 | export const navbarLanguage = { 29 | default: 0, 30 | items: [ 31 | { 32 | text: '简体中文', 33 | link: 'https://nativesupport.dcloud.net.cn/' 34 | }, 35 | { 36 | text: 'English', 37 | link: 'javascript:;', 38 | click() { 39 | location.href = 'https://nativesupport.dcloud.net.cn/en' + location.pathname + location.hash + location.search 40 | } 41 | } 42 | ] 43 | } -------------------------------------------------------------------------------- /docs/.vuepress/config/redirectRouter.js: -------------------------------------------------------------------------------- 1 | const routerMap = { 2 | // ... todo something 3 | } 4 | 5 | export default ({ fullPath, path, hash }) => { 6 | fullPath = decodeURIComponent(fullPath) 7 | const matchFullPath = routerMap[fullPath.replace('?id=', '#').replace('.html', '')]; 8 | if (matchFullPath) { 9 | return { 10 | path: matchFullPath, 11 | replace: true 12 | } 13 | } 14 | 15 | const matchPath = routerMap[path] 16 | if (matchPath) { 17 | return { 18 | path: matchPath, 19 | hash, 20 | replace: true 21 | } 22 | } 23 | 24 | if (path.indexOf('/app-') === 0 || path.indexOf('/android-') === 0 || path.indexOf('/ios-') === 0) { 25 | return { 26 | path: `/tutorial${path}`, 27 | hash, 28 | replace: true 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /docs/.vuepress/config/searchPage.js: -------------------------------------------------------------------------------- 1 | export default { 2 | category: [ 3 | { 4 | text: '问答社区', 5 | tag: 'ask', 6 | type: 'server', 7 | }, 8 | { 9 | text: '插件市场', 10 | tag: 'ext', 11 | type: 'server', 12 | }, 13 | { 14 | text: 'HBuilderX 文档', 15 | type: 'link', 16 | link: 'https://hx.dcloud.net.cn/?s=', 17 | }, 18 | ], 19 | translations: { 20 | searchBox: { 21 | buttonText: '取消', 22 | placeholder: '搜索内容', 23 | searchBy: '搜索提供者' 24 | }, 25 | resultsScreen: { 26 | resultsText: '${resultHits}个相关结果', 27 | noResultsText: '没有找到${categoryText}相关内容', 28 | askNoResultsText: '以下为${categoryText}相关内容' 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /docs/.vuepress/config/siderbar/AppDocs.js: -------------------------------------------------------------------------------- 1 | export default { 2 | qq_group: [ 3 | { 4 | "number": "256775471", 5 | "state": 0, 6 | "prefix": "群1", 7 | joinQQGroupHref: 'https://qm.qq.com/cgi-bin/qm/qr?k=R1Rnbxs1l6N4rWBaogiALGTJfFp2-ulP&jump_from=webapi&authKey=PrQBXSCArDfHQ3JEztYModlZtkfOJCkWI4zB/wERWE/Kld6sipkB1EqJ2TLbAi0h' 8 | }, 9 | { 10 | "number": "814228233", 11 | "state": 0, 12 | "prefix": "群2", 13 | joinQQGroupHref: 'https://qm.qq.com/cgi-bin/qm/qr?k=uwr3DhuW8Gpc5aUsurquozgezy1EmGFj&jump_from=webapi&authKey=/Vv1/nXAT9b9szQEKkhOyZWB9dv8VWyE7nq6xMUIpP1lj/vwkbPfghMIxSTO/Tac' 14 | }, 15 | { 16 | "number": "455763866", 17 | "state": 0, 18 | "prefix": "群3", 19 | joinQQGroupHref: 'https://qm.qq.com/cgi-bin/qm/qr?k=X-XQEy3cHAaFHFXhQLrDJbSlPZDug78e&jump_from=webapi&authKey=4xuwh2OdNvyPUX6/tTN81gu3WkzhYdaKfEwFd73HY5DE6pq84EKy44n0Wzuo+CzZ' 20 | }, 21 | { 22 | "number": "741406073", 23 | "state": 0, 24 | "prefix": "群4", 25 | joinQQGroupHref: 'https://qm.qq.com/cgi-bin/qm/qr?k=V1NOZh7HCJiPxF_kTjfN9zAGDcKtK74X&jump_from=webapi&authKey=YITNfNnLrVMtt/sfpzDWewYIa1QdkE3LEmh5SaKTE55fYF5wm4ZtdxU8nMtUqR5O' 26 | }, 27 | { 28 | "number": "838821538", 29 | "state": 0, 30 | "prefix": "群5", 31 | joinQQGroupHref: 'https://qm.qq.com/cgi-bin/qm/qr?k=u4QqFXRtSkT4GY5yvWt8BJSCoZlol74a&jump_from=webapi&authKey=atlY3ExOao7dODA8XLpQzAgu9+pf1ubLP+KqPI4nJY61SQkmBZXCIWcYkaxkLCpK' 32 | } 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /docs/.vuepress/config/siderbar/MPSdk.js: -------------------------------------------------------------------------------- 1 | export default { 2 | qq_group: [ 3 | { 4 | "number": "892918401", 5 | "state": 0, 6 | "prefix": "群1", 7 | "joinQQGroupHref": "https://qm.qq.com/cgi-bin/qm/qr?k=5cWYSYKRW0THpR_f4e_tevE6yrCQTlT_&jump_from=webapi&authKey=8eJNplRdU45hRvrdeS/aDJKhIQ0zMzzT4nLJwNsF7YyjRHw4DoiABcx4VyzOBQzz" 8 | }, 9 | { 10 | "number": "799670194", 11 | "state": 0, 12 | "prefix": "群2", 13 | joinQQGroupHref: 'https://qm.qq.com/cgi-bin/qm/qr?k=-lrCAMpNg5pBSE9K7QmM79YcY-X0myEU&jump_from=webapi&authKey=rUn1FpijxgDWVkr0PW1S4T57ZV1/5hJN474SpXrzuDGu0WWaBpkaWl/qML+UI27D' 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /docs/.vuepress/config/siderbar/index.js: -------------------------------------------------------------------------------- 1 | import MPSdk from './MPSdk'; 2 | import AppDocs from './AppDocs'; 3 | 4 | export default { 5 | "/": MPSdk, 6 | "/AppDocs/": AppDocs, 7 | "/NativePlugin/": AppDocs, 8 | weChatOfficialAccountImg: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/weixin.jpg' 9 | } 10 | -------------------------------------------------------------------------------- /docs/.vuepress/config/toc.js: -------------------------------------------------------------------------------- 1 | export default { 2 | onThisPage: '本文内容', 3 | collapseText: '展示全部', 4 | expandText: '收起目录' 5 | } -------------------------------------------------------------------------------- /docs/.vuepress/markdown/createMarkdownArray.js: -------------------------------------------------------------------------------- 1 | 2 | function createMarkdownArray(contents = [], childrenName = 'children') { 3 | const markdownArray = [] 4 | let itemCatch = {} 5 | for (let index = 0; index < contents.length; index++) { 6 | const item = contents[index]; 7 | 8 | if (itemCatch.parent) { 9 | if (item.level === itemCatch.level) { 10 | const child = { 11 | ...item, 12 | parent: itemCatch.parent 13 | }; 14 | itemCatch.parent[childrenName].push(child) 15 | delete itemCatch.parent 16 | itemCatch = child 17 | continue 18 | } else if (item.level > itemCatch.level) { 19 | const child = { 20 | ...item, 21 | parent: itemCatch 22 | }; 23 | (itemCatch[childrenName] || (itemCatch[childrenName] = [])).push(child) 24 | itemCatch = child 25 | } else { 26 | const parent = itemCatch.parent 27 | delete itemCatch.parent 28 | itemCatch = parent 29 | index-- 30 | continue 31 | } 32 | } else { 33 | if (typeof itemCatch.level === 'undefined' || item.level === itemCatch.level) { 34 | itemCatch = item 35 | markdownArray.push(itemCatch) 36 | } else { 37 | const child = { 38 | ...item, 39 | parent: itemCatch 40 | }; 41 | (itemCatch[childrenName] || (itemCatch[childrenName] = [])).push(child) 42 | itemCatch = child 43 | continue 44 | } 45 | } 46 | } 47 | 48 | // 移除最后一项 parent 节点,防止循环引用报错 49 | (function removeParent(childs = []) { 50 | childs.forEach(child => { 51 | if (child.parent) delete child.parent 52 | if (child[childrenName]) removeParent(child[childrenName]) 53 | }) 54 | })(markdownArray[markdownArray.length - 1][childrenName]) 55 | 56 | return markdownArray 57 | } 58 | 59 | module.exports = createMarkdownArray -------------------------------------------------------------------------------- /docs/.vuepress/markdown/createSidebar.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | const MarkdownIt = require('markdown-it') 4 | const glob = require('glob'); 5 | const createMarkdownArray = require('./createMarkdownArray') 6 | const { isExternal } = require('../utils') 7 | const createSiteMap = require('./createSiteMap') 8 | 9 | const links = [] 10 | 11 | function parseBar(tab, file, options) { 12 | const textName = options.text || 'text' 13 | const linkName = options.link || 'link' 14 | const contents = [] 15 | 16 | new MarkdownIt().parse(fs.readFileSync(file, { encoding: 'utf-8' }).replace(//g, '').replace(/\t/g, ' ')).forEach(token => { 17 | if (token.type === 'inline') { 18 | let text 19 | let link 20 | let config = {} 21 | token.children.forEach(child => { 22 | switch (child.type) { 23 | case 'text': 24 | text = text || child.content 25 | break 26 | case 'link_open': 27 | link = link || new Map(child.attrs).get('href') 28 | break 29 | case 'code_inline': 30 | try { 31 | config = JSON.parse(child.content) 32 | } catch (error) {} 33 | break 34 | 35 | default: 36 | break 37 | } 38 | }) 39 | 40 | if (link && !isExternal(link)) { 41 | if (!link.startsWith('/')) { 42 | const linkFirstItem = link.split('/')[0] 43 | if (tab.indexOf(linkFirstItem) === -1) { 44 | link = path.join(tab, link).replace(/\\/g, '/') 45 | } 46 | } 47 | 48 | link = path 49 | .join( 50 | '/', 51 | link 52 | .replace(/\.md\b/, '') 53 | .replace(/\bREADME\b/, '') 54 | .replace(/\/index/, '/') 55 | .replace(/\?id=/, '#') 56 | ) 57 | .replace(/\\/g, '/') 58 | 59 | links.push(link) 60 | } 61 | 62 | contents.push({ 63 | level: token.level, 64 | [textName]: text, 65 | [linkName]: link, 66 | ...config, 67 | }) 68 | } 69 | }) 70 | 71 | return createMarkdownArray(contents, options.children) 72 | } 73 | 74 | module.exports = function () { 75 | const sidebar = {} 76 | 77 | // 需要反向,vuepress 在匹配路由的时候,会按照数组的顺序匹配,所以需要将最长的路径放在最前面,否则 / 路径会第一个被匹配,导致右侧栏不跟随路由变化 78 | const tabs = glob 79 | .GlobSync(path.resolve(__dirname, '../../**/_sidebar.md')) 80 | .found.map(file => { 81 | const tab = file.match(/\/docs([\s\S]+)_sidebar.md/)[1] 82 | return tab 83 | }) 84 | .reverse() 85 | 86 | tabs.forEach(tab => { 87 | sidebar[tab] = parseBar(tab, path.join(__dirname, '../../', tab, '_sidebar.md'), { 88 | text: 'title', 89 | link: 'path', 90 | }) 91 | }) 92 | 93 | createSiteMap(links, () => (links.length = 0)) 94 | 95 | return tabs.length ? sidebar : false 96 | } 97 | -------------------------------------------------------------------------------- /docs/.vuepress/markdown/createSiteMap.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | 4 | const domain = 'https://nativesupport.dcloud.net.cn' 5 | const xmlBefore = ` 6 | 7 | ` 8 | const xmlAfter = `\n` 9 | 10 | module.exports = (links, callback = () => { }) => { 11 | const xmlItems = links.map(url => { 12 | return ` 13 | ${domain + url} 14 | ` 15 | }).join('\n') 16 | 17 | const rootPath = path.resolve(__dirname, '../public') 18 | const staticExists = fs.existsSync(rootPath) 19 | if (!staticExists) fs.mkdirSync(rootPath) 20 | 21 | fs.writeFile( 22 | path.resolve(rootPath, 'sitemap.xml'), 23 | xmlBefore + xmlItems + xmlAfter, 24 | { encoding: 'utf-8' }, 25 | callback 26 | ) 27 | } -------------------------------------------------------------------------------- /docs/.vuepress/markdown/header.js: -------------------------------------------------------------------------------- 1 | function parseHeader(tokens) { 2 | tokens.forEach((t, i) => { 3 | if (t.type === 'heading_open' && /h\d/.test(t.tag)) { 4 | const token = tokens[i + 1] 5 | const title = token.content 6 | const res = title.match(/\s*(.+?)@(.+?)\s*$/) 7 | if (res) { 8 | token.content = res[1] 9 | for (let i = 0, array = token.children, l = array.length; i < l; i++) { 10 | const token = array[l - 1 - i] 11 | if (token.type === 'text') { 12 | const title = token.content 13 | const res = title.match(/(.*)@.+/) 14 | if (res) { 15 | token.content = res[1] 16 | break 17 | } 18 | } 19 | } 20 | } 21 | } 22 | }) 23 | return tokens 24 | } 25 | 26 | module.exports = md => { 27 | md.parse = (function (mdParse) { 28 | return function (src, ...array) { 29 | return parseHeader(mdParse.bind(this)(src, ...array)) 30 | } 31 | })(md.parse) 32 | } 33 | -------------------------------------------------------------------------------- /docs/.vuepress/markdown/img-add-attrs.js: -------------------------------------------------------------------------------- 1 | module.exports = function (md, opts) { 2 | md.core.ruler.after('inline', 'image-attrs', function (state) { 3 | state.tokens.forEach(function (blockToken) { 4 | if (blockToken.type === 'html_block') { 5 | replaceHTML(blockToken, addLoadingAttr, state.env); 6 | } 7 | if (blockToken.type === 'inline' && blockToken.children) { 8 | blockToken.children.forEach(function (token) { 9 | const type = token.type; 10 | if (type === 'html_inline') { 11 | replaceHTML(token, addLoadingAttr, state.env); 12 | } 13 | if (type === 'image') { 14 | const src = token.attrGet('src'); 15 | if (!token.attrGet('loading') && matchSrc(src)) { 16 | token.attrPush(['loading', 'lazy']); 17 | } 18 | } 19 | }); 20 | } 21 | }); 22 | return false; 23 | }); 24 | }; 25 | 26 | /** 27 | * 28 | * @param {Record} attribs 29 | */ 30 | function addLoadingAttr(attribs) { 31 | if (matchSrc(attribs.src) && !attribs.loading) { 32 | attribs.loading = 'lazy'; 33 | } 34 | } 35 | 36 | /** 37 | * 38 | * @param {string} [src] img src 39 | * @returns 40 | */ 41 | function matchSrc(src) { 42 | return typeof src === 'string' 43 | ? (src.indexOf('qiniu-web-assets.dcloud.net.cn') > -1 || src.indexOf('web-ext-storage.dcloud.net.cn') > -1) 44 | : false; 45 | } 46 | 47 | function replaceNodes(nodes, replace, env, token) { 48 | if (!nodes) return; 49 | for (let i = 0; i < nodes.length; i++) { 50 | const node = nodes[i]; 51 | if (node.attribs) { 52 | if (node.name === 'img' && node.attribs.src) { 53 | replace(node.attribs); 54 | } 55 | } 56 | replaceNodes(node.children, replace, env, token); 57 | } 58 | } 59 | 60 | function replaceHTML(token, replace, env) { 61 | const htmlparser = require('htmlparser2'); 62 | const serializer = require('dom-serializer'); 63 | const dom = new htmlparser.parseDocument(token.content, { 64 | lowerCaseTags: false, 65 | recognizeCDATA: true, 66 | recognizeSelfClosing: true, 67 | }); 68 | replaceNodes(dom.children, replace, env, token); 69 | token.content = serializer.render(dom, { encodeEntities: 'utf8' }); 70 | } 71 | -------------------------------------------------------------------------------- /docs/.vuepress/markdown/normallizeLink.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const folderNames = [] 3 | fs.readdirSync('docs').forEach(item => { 4 | fs.lstatSync(`docs/${item}`).isDirectory() && folderNames.push(item) 5 | }) 6 | 7 | function isExternal(path) { 8 | return /^[a-z]+:/i.test(path) 9 | } 10 | 11 | function normalizeLink(url) { 12 | if (!url.startsWith('/') && folderNames.some(item => url.split('/')[0] === item)) { 13 | return '/' + url 14 | } 15 | return url 16 | } 17 | 18 | module.exports = function (md) { 19 | md.normalizeLink = (function (oldNormalizeLink) { 20 | return function (url) { 21 | url = isExternal(url) 22 | ? url 23 | : normalizeLink(url) 24 | .replace(/(\bREADME\.md\b)|(\bREADME(?!\.))/i, 'index.html') // README.md | README | readme.md | readme -> index.html 25 | .replace(/(\bindex\.md\b)|(index(?!\.))/, 'index.html') // /index -> /index.html 26 | .replace(/\.md\b/, '.html') // *.md -> *.html 27 | .replace(/\?id=/, '#') // ?id= -> # 28 | .replace(/\\/g, '/') // \ -> / 29 | return oldNormalizeLink.bind(this)(url) 30 | } 31 | })(md.normalizeLink) 32 | } -------------------------------------------------------------------------------- /docs/.vuepress/markdown/translate.js: -------------------------------------------------------------------------------- 1 | module.exports = md => { 2 | md.parse = (function (mdParse) { 3 | return function (src, ...array) { 4 | return mdParse.bind(this)(src, ...array) 5 | } 6 | })(md.parse) 7 | md.render = (function (mdRender) { 8 | return function (src, ...array) { 9 | return mdRender.bind(this)(src, ...array) 10 | } 11 | })(md.render) 12 | } 13 | -------------------------------------------------------------------------------- /docs/.vuepress/public/web-view-forum.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 网络网页 7 | 36 | 37 | 38 |

web-view 组件加载网络 html 示例。点击下列按钮,跳转至其它页面。

39 |
40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 |

网页向应用发送消息,应用会在此页面后退时接收到消息。

48 |
49 | 50 |
51 |
52 | 74 | 75 | 76 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /docs/.vuepress/public/web-view.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 网络网页 7 | 36 | 37 | 38 |

web-view 组件加载网络 html 示例。点击下列按钮,跳转至其它页面。

39 |
40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 |

网页向应用发送消息,注意:小程序端应用会在此页面后退时接收到消息。

48 |
49 | 50 |
51 |
52 | 74 | 75 | 76 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /docs/.vuepress/utils/index.js: -------------------------------------------------------------------------------- 1 | function isExternal(path) { 2 | return /^[a-z]+:/i.test(path) 3 | } 4 | 5 | function simplifySlugText(text) { 6 | // 移除方法后面的括号及里面的内容 7 | if (text.match(/^uni/) && text.match(/\)$/)) { 8 | text = text.replace(/^uni/, '').replace(/\(.*\)$/, ''); 9 | } 10 | // 处理部分非uni开头方法的括号内容,主要是会出现多参数的情况。 11 | if (text.match(/\([\w+\s+\[\],]+\)$/)) { 12 | text = text.replace(/\([\w+\s+\[\],]+\)$/, ''); 13 | } 14 | return text; 15 | } 16 | 17 | module.exports = { 18 | isExternal, 19 | simplifySlugText 20 | } 21 | -------------------------------------------------------------------------------- /docs/5PlusDocs/iosM.md: -------------------------------------------------------------------------------- 1 | ##iOS平台 离线下载包中各个文件或文件夹的作用 2 | 3 | 2、HBuilder-Hello这个文件夹的作用: 4 | uni-app项目离线打包的示例工程(注意:如果是uni-app项目且为自定义组件模式时,请查看这个地址(https://ask.dcloud.net.cn/article/35871)来进行配置)。 5 | 6 | 1、HBuilder-ExampleDemo这个文件夹的作用: 7 | uni-app项目包含所有模块的离线示例工程,注意这个里面的工程不是打包工程。 8 | 9 | 4、HBuilder-uniPluginDemo这个目录的作用: 10 | uni-app规范的、基于weex扩展的原生插件开发工程,,注意这个里面的工程不是打包工程。 11 | 12 | 5、Feature-iOS.xls这个文件的作用: 13 | 配置表(依赖的库、资源文件、参数配置等)。 14 | 15 | 7、SDK这个目录的作用: 16 | 这个里面是工程需要的库文件,.h头文件,配置文件,资源文件。 17 | 18 | 19 | ### 以下是SDK/Libs文件夹中主要库的作用: 20 | 21 | | 第三方库名称 | 作用 | 22 | | :------: | :------: | 23 | | AlipaySDK.framework | 支付宝支付| 24 | | AMapFoundationKit.framework,AMapLocationKit.framework,AMapSearchKit.framework,MAMapKit.framework |高德地图、定位| 25 | | BaiduMapAPI_Base.framework,BaiduMapAPI_Cloud.framework,BaiduMapAPI_Location.framework,BaiduMapAPI_Map.framework,BaiduMapAPI_Search.framework,BaiduMapAPI_Utils.framework |百度地图定位| 26 | | BUAdSDK.framework ,BUFoundation.framework|穿山甲广告| 27 | | GTSDK.framework |个推消息推送| 28 | | iflyMSC.framework |讯飞语音| 29 | | IJKMediaFramework.framework |IJK视频播放器| 30 | | UMAnalytics.framework,UMCommon.framework|友盟统计| 31 | | libBaiduSpeechSDK.a |百度语音| 32 | | libWeChatSDK.a |微信SDK不带支付功能| 33 | | libWeChatSDK_pay.a |微信SDK带支付功能| 34 | | libWeiboSDK.a |新浪微博SDK| 35 | | UPLiveSDKDll.framework |又拍云推流| 36 | | QHADSDK.framework |360广告| 37 | -------------------------------------------------------------------------------- /docs/AppDocs/FAQ/ios.md: -------------------------------------------------------------------------------- 1 | ## Q: 有时安装应用之后,发现项目资源没更新 2 | 3 | A: 可能是control.xml 文件配置了syncDebug="true"导致的,需要改成false或者删除这个配置 4 | 5 | ## Q: 更新SDK后编译报'Could not find or use auto-linked library 'swiftXXX''的错误 6 | 7 | A: 可能是工程为纯OC的项目,部分SDK更新后需要swift环境导致的,主工程添加swift环境即可解决(新建一个swift文件后,根据xcode提示操作即可) 8 | 9 | ## Q: 编译报错'Building for iOS, but the linked and embedded framework 'xxx.framework' was built for iOS + iOS Simulator.' 10 | 11 | A: 问题原因是依赖库中有模拟器+真机多架构的二进制文件。 Xcode 12.3 起,Apple 不建议在一个.framework 文件中绑定多平台的库,建议使用.xcframework 文件替代。解决方式是在 Xcode 中,进入 TARGETS > Project Name > Build Settings > Build Options 菜单,将 Validate Workspace 设置为 Yes。 12 | 13 | ## Q: 升级Xcode15后编译报错提示文件重复添加,或运行时闪退 14 | 15 | A: Build Settings -> Other Linker Flags 加入 -ld_classic。 -------------------------------------------------------------------------------- /docs/AppDocs/FAQ/jsframeworkdeclare.md: -------------------------------------------------------------------------------- 1 | ### 框架说明 2 | 3 | 离线打包在生成时无法确定用户具体采用的Vue版本及是否是自定义基座,为减少集成难度,故将所有框架都包含在库中。 4 | - uni-jsframework.js: vue2项目正式包使用 5 | - uni-jsframework-dev.js: vue2项目自定义基座包使用 6 | - uni-jsframework-vue3: vue3项目正式包使用 7 | - uni-jsframeowrk-vue3-dev.js: vue3项目自定义基座包使用 8 | 9 | ### 屏蔽不需要的框架 10 | 11 | **注意:生成自定义基座的时候需要去掉下述配置** 12 | 13 | #### 确定Vue版本 14 | 15 | 打开uni-app项目根目录下的manifest.json文件,点击“基础配置”,查看“Vue版本选择” 16 | 17 | #### 排除框架 18 | 19 | 如果生成正式包时需要去除不需要的框架,可参考如下配置 20 | 21 | - 如果Vue版本为`2` 22 | 23 | 需要在Android离线打包项目目录下的build.gradle的Android节点下添加如下内容 24 | ``` 25 | applicationVariants.all { variant -> 26 | variant.mergeAssets.doLast { 27 | delete(fileTree(dir: variant.mergeAssets.outputDir, includes: ['*dev.js','*vue3.js'])) 28 | } 29 | } 30 | ``` 31 | - 如果Vue版本为`3` 32 | 33 | 需要在Android离线打包项目目录下的build.gradle下的Android节点下添加如下内容 34 | ``` 35 | applicationVariants.all { variant -> 36 | variant.mergeAssets.doLast { 37 | delete(fileTree(dir: variant.mergeAssets.outputDir, includes: ['*dev.js','uni-jsframework.js'])) 38 | } 39 | } 40 | ``` -------------------------------------------------------------------------------- /docs/AppDocs/README.md: -------------------------------------------------------------------------------- 1 | ## 简介 2 | App离线开发工具包,即App离线SDK,是把App运行环境(runtime)封装为原生开发调用接口,开发者可以在自己的 Android 及 iOS 原生开发环境配置工程使用,包括 Android离线开发SDK 及 iOS离线开发SDK。 3 | 4 | ## AppKey 5 | 从3.1.10版本开始使用App离线SDK需要申请Appkey,具体请参考下面链接: 6 | + [申请Appkey](/AppDocs/usesdk/appkey.md) 7 | 8 | ## 功能 9 | App离线SDK主要用于`App本地离线打包`及`扩展原生能力` 10 | 11 | - App本地离线打包: 12 | 对应HBuilderX的云端打包功能,`uni-app`、`5+ App`等项目发行为原生App时,无需将App资源及打包要使用的签名证书等提交到云端打包服务器,在开发者本地配置的原生开发环境中生成安装包apk/ipa。 13 | + [Android平台App本地离线打包](/AppDocs/usesdk/android.md) 14 | + [iOS平台App本地离线打包](/AppDocs/usesdk/ios.md) 15 | 16 | - 扩展原生能力: 17 | 当HBuilderX中提供的能力无法满足App功能需求,需要通过使用Andorid/iOS原生开发实现时,可使用App离线SDK开发原生插件来扩展原生能力。 18 | + `uni-app`项目扩展原生能力需开发[uni原生插件](/NativePlugin/README.md),支持云端打包,有完善的开发者生态[插件市场](https://ext.dcloud.net.cn/?cat1=5&cat2=51) 19 | + `5+ App`项目扩展原生能力需开发`5+原生插件`,仅支持本地离线打包。 20 | 21 | > `5+原生插件`将不再继续维护,建议开发者升级应用为`uni-app`项目并使用`uni原生插件`。如需继续使用5+原生插件,请参考以下文档: 22 | - [Android平台5+原生插件开发](http://ask.dcloud.net.cn/article/66) 23 | - [iOS平台5+原生插件开发](http://ask.dcloud.net.cn/article/67) 24 | 25 | 26 | 27 | ## 注意 28 | 原 `5+ SDK` 的 `Widget方式集成` 和 `WebView方式集成` 将不再继续维护支持,相关功能已迁移到[uni小程序 SDK](/README.md),因此建议开发者尽快将应用升级到`uni-app`项目。 29 | 30 | `5+ App`项目如需继续使用Widget/Webview方式集成,请参考以下文档: 31 | - [Android平台Widget方式集成5+SDK](http://ask.dcloud.net.cn/article/81) 32 | - [Android平台WebView方式集成5+SDK](http://ask.dcloud.net.cn/article/80) 33 | - [iOS平台Widget方式集成5+SDK](http://ask.dcloud.net.cn/article/84) 34 | - [iOS平台WebView方式集成5+SDK](http://ask.dcloud.net.cn/article/83) 35 | 36 | > Widget/Webview方式集成已废弃,请不要在新项目使用此集成方式,推荐使用`uni小程序SDK` 37 | -------------------------------------------------------------------------------- /docs/AppDocs/_sidebar.md: -------------------------------------------------------------------------------- 1 | * [概述](README.md) 2 | * 原生工程配置 3 | * [Android 原生工程配置](usesdk/android.md) 4 | * [iOS 原生工程配置](usesdk/ios.md) 5 | * 模块及三方SDK配置 6 | * Android 模块配置 7 | * [Geolocation(定位)](usemodule/androidModuleConfig/geolocation.md) 8 | * [Push(消息推送)](usemodule/androidModuleConfig/push.md) 9 | * [Share(分享)](usemodule/androidModuleConfig/share.md) 10 | * [Oauth(登录鉴权)](usemodule/androidModuleConfig/oauth.md) 11 | * [Map(地图)](usemodule/androidModuleConfig/map.md) 12 | * [Payment(支付)](usemodule/androidModuleConfig/pay.md) 13 | * [Speech(语音输入)](usemodule/androidModuleConfig/speech.md) 14 | * [Statistic(统计)](usemodule/androidModuleConfig/statistic.md) 15 | * [FacialRecognitionVerify(实人认证)](usemodule/androidModuleConfig/facialRecognitionVerify.md) 16 | * [uni-ad](usemodule/androidModuleConfig/uniad.md) 17 | * [Android X5 Webview(腾讯TBS)](usemodule/androidModuleConfig/x5.md) 18 | * [第三方 SDK 依赖说明](usemodule/androidModuleConfig/android_Library.md) 19 | * [其他模块及国际化配置](usemodule/androidModuleConfig/others.md) 20 | * [iOS 模块配置](usemodule/iOSModuleConfig/common.md) 21 | * [Geolocation(定位)](usemodule/iOSModuleConfig/geolocation.md) 22 | * [Push(消息推送)](usemodule/iOSModuleConfig/push.md) 23 | * [Share(分享)](usemodule/iOSModuleConfig/share.md) 24 | * [Oauth(登录鉴权)](usemodule/iOSModuleConfig/oauth.md) 25 | * [Map(地图)](usemodule/iOSModuleConfig/map.md) 26 | * [Payment(支付)](usemodule/iOSModuleConfig/pay.md) 27 | * [Speech(语音输入)](usemodule/iOSModuleConfig/speech.md) 28 | * [LivePusher(直播推流)](usemodule/iOSModuleConfig/livepusher.md) 29 | * [Statistic(统计)](usemodule/iOSModuleConfig/statistic.md) 30 | * [FacialRecognitionVerify(实人认证)](usemodule/iOSModuleConfig/facialRecognitionVerify.md) 31 | * [uni-ad](usemodule/iOSModuleConfig/uniad.md) 32 | * [iOS UIWebview](usemodule/iOSModuleConfig/uiwebview.md) 33 | * [第三方 SDK 依赖说明](usemodule/iOSModuleConfig/dependentLibrary.md) 34 | * 导入App资源 35 | * [导出App资源](importfeproject/export.md) 36 | * [Android 导入App资源](importfeproject/android.md) 37 | * [iOS 导入App资源](importfeproject/ios.md) 38 | * 打包发行 39 | * [Android 打包发行](package/android.md) 40 | * [iOS 打包发行](package/ios.md) 41 | * App离线SDK 42 | * [Android 离线SDK](download/android.md) 43 | * [iOS 离线SDK](download/ios.md) 44 | * 注意事项 45 | * [Android 注意事项](FAQ/android.md) 46 | * [iOS 注意事项](FAQ/ios.md) 47 | -------------------------------------------------------------------------------- /docs/AppDocs/download/android.md: -------------------------------------------------------------------------------- 1 | ## Android 离线SDK - 正式版 2 | 3 | 1. **注意:HBuilderX 3.7.6版本开始,微信、支付宝、高德改为线上依赖,涉及到的模块有:微信支付、微信登录、微信分享、支付宝支付、高德地图、高德定位,涉及上述功能的App请参考文档重新集成。** 4 | 2. **注意:HBuilderX 3.2.5版本之后适配了AndroidX,升级时需要参考文档重新配置** 5 | 6 | ### 2024年05月08日发布——HBuilderX(4.15.2024050802) 7 | 8 | [百度云](https://pan.baidu.com/s/1AFjLggD7g6ue0iKgZ8yVyA?pwd=jrrb),提取码: jrrb 9 | 10 | [和彩云](https://caiyun.139.com/m/i?115CnrGgpdvQS),提取码: Wq8j 11 | 12 | + 更新uni-app离线打包支持,需使用HBuilderX(4.15.2024050802)版本生成本地打包App资源。 13 | 14 | [历史版本](https://pan.baidu.com/s/1ZYxRVH23EbldPQqOxx21HQ?pwd=wk4i) 15 | 16 | [历史更新日志](/AppDocs/download/historyRelease/androidRelease.md) 17 | 18 | 19 | ## Android 离线SDK - Alpha版 20 | 21 | ### 2024年06月19日发布——HBuilderX(4.21.2024061818-alpha) 22 | 23 | [百度云](https://pan.baidu.com/s/1IQDhk2MhPf8AG9eXxfnGew?pwd=929t) ,提取码: 929t 24 | 25 | [和彩云](https://caiyun.139.com/m/i?115CnrGjAyY22),提取码: QNcU 26 | 27 | * 更新uni-app离线打包支持,需使用HBuilderX(4.21.2024061818-alpha)版本生成本地打包App资源。 28 | * 更新 统计模块 google渠道友盟统计 SDK 为 9.6.8 版,解决可能无法通过 GooglePlay 审核的问题 [详情](https://ask.dcloud.net.cn/question/189922) 29 | 30 | [历史版本](https://pan.baidu.com/s/1KtOCtMZJSgfAayHNjTpdTg?pwd=4hvi) 31 | 32 | [历史更新日志](/AppDocs/download/historyRelease/androidAlpha.md) 33 | -------------------------------------------------------------------------------- /docs/AppDocs/download/ios.md: -------------------------------------------------------------------------------- 1 | ## SDK 升级说明 2 | 如果您当前集成的 SDK 版本低于 HBuilderX 版本,但是功能都正常的话可以选择不升级 SDK,按照这个 [文档](https://ask.dcloud.net.cn/article/35627) 添加配置可以屏蔽版本不一致的弹窗提示,框架正常情况都是向下兼容的,您也可以查看一下更新日志考虑是否升级 SDK; 如果要升级可以更新离线sdk包下Bundles、inc、Libs目录下的文件。 3 | 4 | ## 注意事项 5 | **功能模块中的依赖库需要依赖基础模块的库,更新SDK版本时,需要将使用到的基础库和功能模块的依赖库及资源文件统一升级,如果仅升级部分库可能会导致版本不一致出现问题;建议做法,将 SDK 整个放到工程路径下,添加依赖库或文件的时候通过 `选择本地文件的方式`添加,下次升级的时候直接整个覆盖SDK目录即可,避免每次都需要单独去挑选所依赖的库;** 6 | 7 | **SDK目录下的 /SDK/Bundles/PandoraApi.bundle/feature.plist,如果之前有修改过需要开发者自行备份,升级完SDK再次覆盖此文件,避免升级造成部分功能异常** 8 | 9 | **离线SDK更新后编译报错,可根据报错信息查看离线相关模块依赖库是否有更新** 10 | 11 | **离线SDK 3.8.0版本之后,部分广告SDK由.a文件变更为.framework文件,穿山甲以及GromoreSDK由framework变更为xcframework[详情](https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/uniad.html)** 12 | 13 | **离线SDK 3.99版本之后,Paypal支付最低支持系统版本由iOS11变更为iOS13** 14 | 15 | **若使用百度网盘下载后解压失败,请使用和彩云下载** 16 | 17 | 18 | ## iOS 离线SDK - 正式版 19 | 20 | ### 2024年05月08日发布——HBuilderX(4.15.2024050802) 21 | 22 | [和彩云,提取码: dwtz](https://caiyun.139.com/m/i?115CeUAGRSavx) 23 | 24 | [百度网盘,提取码: hwmb](https://pan.baidu.com/s/1lOkR8RasNFTKzoeyxPr3Ww?pwd=hwmb) 25 | 26 | 无 27 | 28 | [历史版本,提取码: auvs](https://pan.baidu.com/s/1xhzcuSVWNTKqachtuKU4hg?pwd=auvs) 29 | 30 | [历次更新日志](update_history_iOS_release.md) 31 | 32 | 33 | ## iOS 离线SDK - Alpha版 34 | 35 | ### 2024年06月24日发布——HBuilderX(4.22.2024062415-alpha) 36 | 37 | [和彩云,提取码: phdA](https://caiyun.139.com/m/i?115CopKDM9CL8) 38 | 39 | [百度网盘,提取码: z5wu](https://pan.baidu.com/s/17PsCdDEMYGp_I29mErsRbw?pwd=z5wu) 40 | 41 | 无 42 | 43 | [历史版本,提取码: mewk](https://pan.baidu.com/s/14D7VbdN0L16r5S8es3MuxQ?pwd=mewk) 44 | 45 | [历次更新说明](update_history_iOS_alpha.md) 46 | -------------------------------------------------------------------------------- /docs/AppDocs/importfeproject/android.md: -------------------------------------------------------------------------------- 1 | ## 导入资源 2 | 3 | 将app资源拷贝到项目assets->apps下,目录结构如下图 4 | 5 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-8.png) 6 | 7 | ## 配置应用信息 8 | 9 | 修改dcloud_control.xml中的appid为uni-app的id,确保dcloud_control.xml中的appid与manifest.json中的id与文件夹名一致,如下图所示: 10 | 11 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-9.png) 12 | 13 | ## 内置资源更新 14 | 15 | 如果您更新了内置资源,重新运行App加载的还是旧的资源时请检查下面的配置: 16 | 17 | 1. 内置的资源版本名称和版本号需要高于上一个版本; 18 | 19 | ## 编译运行 20 | 21 | 项目配置完成,直接点击android studio运行按钮即可。 -------------------------------------------------------------------------------- /docs/AppDocs/importfeproject/export.md: -------------------------------------------------------------------------------- 1 | ## 准备工作 2 | 首先请确保uni-app编译器的版本号和离线 SDK 的版本号一致。如果版本不一致,app启动时会[弹出版本不一致的提示框](https://ask.dcloud.net.cn/article/35627) 3 | 4 | ### 查看uni-app编译器版本号 5 | 6 | #### 通过 HBuilderX 可视化界面创建的项目 7 | 8 | ![HBuilderX版本](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/ImportResources/gongbanbeny1.png) 9 | 10 | #### 通过vue-cli命令行创建的项目 11 | 12 | 通过命令行 cd 到项目的根目录,执行 `npm run info` 13 | 14 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-16.png) 15 | 16 | ### 查看 SDK 版本号 17 | 18 | SDK 下载页面有说明对应的版本号 19 | 20 | ![sdk版本](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/ImportResources/gongbanbeny2.png) 21 | 22 | ## 生成本地打包 APP 资源 23 | ### 通过 HBuilderX 可视化界面创建的项目 24 | 25 | 选择项目 -> 发行 -> 原生App-本地打包 -> 生成本地打包App资源 26 | 27 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/ImportResources/dao7.png) 28 | 29 | ### 通过vue-cli命令行创建的项目 30 | 31 | 通过命令行 cd 到项目根目录,执行 `npm run build:app-plus`,会在 项目目录/dist/build/app-plus 下生成app打包资源。 32 | 33 | 新建一个文件夹,以 manifest.json 中的 appid 字段为文件名,然后在文件夹中创建一个 www 目录,将 app-plus 文件夹下的资源拷贝到 www 目录中。 34 | 35 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-17.png) 36 | 37 | 如果 manifest.json 中的 appid 字段为空,需要将项目拖进 HBuilderX 中重新获取一个 appid。**注意:appid不能随便填写,必须重新获取。** 38 | 39 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-18.png) -------------------------------------------------------------------------------- /docs/AppDocs/importfeproject/ios.md: -------------------------------------------------------------------------------- 1 | ## 导入资源 2 | 将本地打包App资源拷贝到项目目录下的 `Pandora -> apps` 路径下 3 | 4 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/ImportResources/dao1.png) 5 | 6 | ## 配置应用信息 7 | 8 | 打开 Xcode 工程目录下的control.xml文件,修改appid值: 9 | ![](https://ask.dcloud.net.cn/uploads/article/20190424/f16ec2cf192ebd5a8fa653b444771841.png) 10 | 11 | - appid:值为`HBuilderX`应用的`appid`,必须与5+应用`manifest.json`中的`id`字段值(`uni-app`项目为`manifest.json`中的`appid`字段值)完全一致; 12 | 13 | ## 内置资源更新 14 | 15 | 如果您更新了内置资源,重新运行App加载的还是旧的资源时请检查下面的配置: 16 | 17 | 1. 工程 Bundle Identifier 已经改成您自己的; 18 | 2. 内置的资源版本名称和版本号需要高于上一个版本; 19 | 3. control.xml 中 debug 改成 false 20 | 21 | ## 编译运行 22 | 上面步骤都完成之后,便可以编译运行工程,如果跑起来的APP是自己想要的应用,说明配置都是正确的 23 | -------------------------------------------------------------------------------- /docs/AppDocs/package/android.md: -------------------------------------------------------------------------------- 1 | 2 | ## 应用配置 3 | 4 | 打开build.gradle文件,修改versionCode和versionName字段,如下图: 5 | 6 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-1.png) 7 | 8 | versionCode为应用的版本号(整数值),用于各应用市场的升级判断,建议与manifest.json中version -> code值一致 9 | 10 | versionName为应用的版本名称(字符串),在系统应用管理程序中显示的版本号,建议与manifest.json中version -> name值一致。 11 | 12 | 13 | ## 生成安装包 14 | 15 | **注意:如果需要生成aab安装包,需要在项目根目录下的gradle.properties文件中添加如下内容** 16 | ``` 17 | android.bundle.enableUncompressedNativeLibs = false 18 | ``` 19 | 20 | 点击Build->Generate Signed Bundle/APK...,如下图: 21 | 22 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-2.png) 23 | 24 | - 生成apk 25 | 26 | 选择 APK 选项,点击Next 27 | 28 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-3.png) 29 | 30 | - 生成aab 31 | 32 | 选择Android App Bundle选项,点击Next 33 | 34 | 选择项目(Module),即当前需要打包的项目,注意:如果创建的项目是Library的话,不会显示在此列表里 35 | 36 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/7-4.png) 37 | 38 | 选择证书,如果没有证书的话,点击Create new... 新建,如果已有证书,可以点击Choose exiting... 选择已有证书 39 | 40 | **注意:签名证书不要随意更换,否则会导致用户升级失败!** 41 | 42 | 注:若之前云打包使用的是DCloud默认证书,为保证正常升级,依然可以继续下载DCloud证书使用。[证书地址](http://ask.dcloud.net.cn/article/68) 43 | 44 | 创建证书 45 | 46 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-4.png) 47 | 48 | 输入密码(key store password对应上图第一个password,key password 对应上图第二个password),点击Next。 49 | 50 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-5.png) 51 | 52 | 生成apk,Build Variants建议选release(正式发行尽量杜绝选择debug),Signature Versions建议都选,点击Finish。 53 | 54 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-6.png) 55 | 56 | 打包完成 57 | 58 | 若apk打包成功,会在Android studio 右下角显示打包成功提示框,如下图。 59 | 60 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-7.png) 61 | 62 | 点击locate即可跳转到安装包所在目录。 63 | 64 | 至此,打包完成,此时可以将打包之后的apk上传到应用市场了。 65 | 66 | ## 查看签名信息 67 | 68 | + Android studio中查看签名信息 69 | 70 | 首先,需要在build.gradle中配置签名路径及密码 71 | 72 | ``` 73 | android { 74 | signingConfigs { 75 | config { 76 | storeFile file('myapplication.jks') // 支持相对路径与绝对路径 77 | storePassword '123456' 78 | keyAlias = '别名,建议使用公司英文简称' 79 | keyPassword '123456' 80 | } 81 | } 82 | buildTypes { 83 | debug { 84 | signingConfig signingConfigs.config 85 | } 86 | release { 87 | signingConfig signingConfigs.config 88 | } 89 | } 90 | } 91 | ``` 92 | 93 | 点击右侧Gradle选项卡,点击上面build.gradle对应的项目,点击Tasks->android->signingReport,如下图所示: 94 | 95 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-8.png) 96 | 97 | 然后签名信息会输出在Android studio底部Run选项卡中,如下图所示: 98 | 99 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-9.png) 100 | 101 | + CMD中查看签名信息 102 | 103 | 在cmd中输入下面内容,回车查询。 104 | 105 | ``` 106 | keytool -v -list -keystore keystore.jks(签名文件路径) 107 | ``` 108 | 109 | 输出内容如下图所示: 110 | 111 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/6-10.png) 112 | 113 | 注:上述指纹证书只为测试使用,禁止以此注册第三方平台账号 114 | -------------------------------------------------------------------------------- /docs/AppDocs/package/ios.md: -------------------------------------------------------------------------------- 1 | ## 预备资料 2 | 准备好Xcode打包需要的bundleid和生产环境的证书。 3 | 4 | ## 应用配置 5 | ### 配置应用标识(Bundle Identifier) 6 | 7 | 选择左侧应用工程根目录,选中TARGETS下的HBuilder打开工程属性界面,在General下修改Identity的值: 8 | 9 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/PackagingIssue/gongboundleID.png) 10 | 11 | 其中,Bundle Identifier为苹果的AppID,必须与应用发布是配置的Profile关联的AppID一致; 12 | 13 | Version为应用版本号,在App Store中显示的版本号,推荐与manifest.json中version下的name值一致; 14 | 15 | Build为编译版本号,App Store判断升级使用,推荐与manifest.json中version下的code值一致。 16 | 17 | ### 配置应用版本号 18 | 在打开的原生工程中,点击工程的targets和点开工程里的manifest文件,然后将manifest文件里的“version”字段里的“code”的内容 和原生工程里的Build 的写成一样。 19 | 20 | 注意,manifest文件里的“version”字段里的“code” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本号。如下图红色框所示: 21 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/PackagingIssue/gongbanbh1.png) 22 | 23 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/PackagingIssue/gongbanbh2.png) 24 | 25 | 26 | 27 | ### 配置证书 28 | 按下图红框内的提示配置生产证书 29 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/PackagingIssue/dbfx1.png) 30 | 31 | ## 生成ipa 32 | 按下图所示 点击Archive,等打包结束后,会弹出一个界面,然后按界面提示生成ipa包 33 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/PackagingIssue/dbfx2.png) 34 | 35 | ## 上传ipa 36 | 使用Transporter工具上传ipa包。 37 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/android.md: -------------------------------------------------------------------------------- 1 | ### 模块配置 2 | 3 | #### 依赖库配置 4 | 5 | 参考“Feature-Android.xls”文档确定应用中使用到的扩展API,拷贝libs目录中对应的“jar或aar”文件拷贝到工程的app->libs目录下,如使用地图功能,需将下图“jar包”列对应的文件拷贝到libs目录下。此处以高德地图为例。 6 | 7 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-11.png) 8 | 9 | #### 添加应用权限 10 | 11 | 参考“Feature-Android.xls”文档的“AndroidManifest.xml permission”列,将需要配置的模块的权限拷贝到对应项目的Androidmanifest.xml中,如下图。 12 | 13 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-12.png) 14 | 15 | #### dcloud_properties.xml 配置 16 | 17 | 参考“Feature-Android.xls”文档的“properties.xml文件配置”列,将需要配置的模块的features节点和services节点拷贝到dcloud_properties.xml中,如下图。 18 | 19 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-14.png) 20 | 21 | #### 添加第三方应用信息 22 | 23 | 参考“Feature-Android.xls”文档的“AndroidManifest.xml Application节点”列,将需要配置的模块的节点拷贝到对应项目的Androidmanifest.xml中并修改对应的应用信息,如下图。 24 | 25 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/5-13.png) 26 | 27 | ### 其他模块配置 28 | 29 | * [推送模块配置](/AppDocs/usemodule/androidModuleConfig/push.md) 30 | * [分享模块配置](/AppDocs/usemodule/androidModuleConfig/share.md) 31 | * [登陆鉴权模块配置](/AppDocs/usemodule/androidModuleConfig/oauth.md) 32 | * [地图模块配置](/AppDocs/usemodule/androidModuleConfig/map.md) 33 | * [支付模块配置](/AppDocs/usemodule/androidModuleConfig/pay.md) 34 | * [定位模块配置](/AppDocs/usemodule/androidModuleConfig/geolocation.md) 35 | * [语音识别模块配置](/AppDocs/usemodule/androidModuleConfig/speech.md) 36 | * [其他模块及国际化配置](/AppDocs/usemodule/androidModuleConfig/others.md) 37 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/androidModuleConfig/android_Library.md: -------------------------------------------------------------------------------- 1 | 2 | ### 默认集成依赖库 3 | 4 | |SDK|版本|HBuilder X最低版本|备注(使用模块) 5 | |:----|:----|:----|:---- 6 | |androidx|V1.1.0|HBuilder X V3.8.4|androidx相关依赖库 7 | |fastjson|v1.2.83|HBuilder X V3.6.17(3.6.17以下版本可使用1.1.46)|fastjson是阿里巴巴的开源JSON解析库 8 | |android-gif-drawable|V1.2.23|HBuilder X V3.2.5|开源库 android-gif-drawable用于gif图显示 9 | |移动安全联盟OAID|V1.0.25|HBuilder X V3.2.5|oaid_sdk 获取oaid使用 10 | |glide|V4.9.0|HBuilder X V3.2.5|图片库 图片预览使用 11 | |fresco|V1.13.0|HBuilder X V3.2.5|图片库 用于nvue页面图片展示 12 | |webkit|V1.3.0|HBuilder X V3.6.15|webkit依赖库,用于支持暗黑模式 3.6.15版本必须集成 13 | 14 | 15 | ### 其他功能模块依赖库 16 | 17 | |SDK |版本 |HBuilder X最低版本 |备注(使用模块) | 18 | |:---- |:---- |:---- |:---- | 19 | |个推push |V3.2.6.0 |HBuilder X V3.3.1 |unipush模块 | 20 | |百度定位 |V7.5.0 |HBuilder X V2.0.0 |定位模块 | 21 | |百度地图 |V5.4.1 |HBuilder X V2.0.0 |map模块 | 22 | |高德定位 |V6.1.0 |HBuilder X V3.6.9 |定位模块 | 23 | |高德地图 |V9.5.0 |HBuilder X V3.6.9 |map模块 | 24 | |微信 |V6.8.0 |HBuilder X V3.7.12 |登录、分享、支付模块 | 25 | |新浪微博 |V12.5.0 |HBuilder X V3.6.1 |登录、分享模块 | 26 | |QQ |V3.5.12 |HBuilder X V3.5.5 |登录、分享模块 | 27 | |友盟统计 |V9.6.1 |HBuilder X V3.8.3 |统计模块 | 28 | |百度语音 |V3.4.1.101 |HBuilder X V3.0.1 |语音模块 | 29 | |LiteAVSDK |V6.3.7089 |HBuilder X V3.0.1 |livepusher推流模块 | 30 | |腾讯x5内核 |V4.3.0.1148_43697 |HBuilder X V3.0.7 |X5内核 | 31 | |hms |V6.5.0.300 |HBuilder X V3.6.1 |华为push | 32 | |agcp |V1.6.0.300 |HBuilder X V3.6.1 |华为AppGallery Connect | 33 | |穿山甲&GroMore |V5.7.0.5 |HBuilder X V3.98 |广告模块 | 34 | |优量汇广告 |V4.542.1412 |HBuilder X V3.93 |广告模块 | 35 | |快手广告联盟 |V3.3.53.3 |HBuilder X V3.93 |广告模块 | 36 | |快手内容联盟 |V3.3.53 |HBuilder X V3.93 |广告模块 | 37 | |sigmob广告 |V4.12.7 |HBuilder X V3.93 |广告模块 | 38 | |百度广告 |V9.322 |HBuilder X V3.93 |广告模块 | 39 | |华为广告 |V13.4.66.300 |HBuilder X V3.93 |广告模块 | 40 | |Pangle广告 |V5.0.0.3 |HBuilder X V3.93 |广告模块 | 41 | |google AdMob |V21.4.0 |HBuilder X V3.93 |广告模块 | 42 | |ijkplayer |V0.8.8 |HBuilder X V3.0.1 |视频播放器模块 | 43 | |DanmakuFlameMaster |V0.6.2 |HBuilder X V2.0.0 |视频播放器模块 | 44 | |lame |V3.100 |HBuilder X V3.2.16 |音频录音 | 45 | |play-services-auth |V19.2.0 |HBuilder X V3.2.7 |登录 Google登录 | 46 | |facebook-android-sdk |V16.1.3 |HBuilder X V3.91 |登录 Facebook登录 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/androidModuleConfig/facialRecognitionVerify.md: -------------------------------------------------------------------------------- 1 | ## 实人认证 2 | 3 | **实人认证依赖于UTS基础模块,请先集成[UTS基础模块](/AppDocs/usemodule/androidModuleConfig/uts.md)** 4 | 5 | ### 需要拷贝的文件 6 | 7 | **需要引入工程的aar文件** 8 | 9 | |路径|文件| 10 | | :-------: | :-------: | 11 | | SDK\libs | uni-facialRecognitionVerify-release.aar、aliyun-base-XXX.aar、aliyun-facade-XXX.aar、aliyun-face-XXX.aar、aliyun-faceaudio-XXX.aar、aliyun-facelanguage-XXX.aar、aliyun-wishverify-XXX.aar、Android-AliyunFaceGuard-10042.aar、APSecuritySDK-DeepSec-7.0.1.20230914.jiagu.aar| 12 | 13 | `XXX`为版本号,具体版本号以下载的SDK中的为准 14 | 15 | HBuilder X 3.99 新增了`facialRecognitionVerify-support-release.aar`库,作用是应用可以在X86设备上正常运行,但调用`uni.startFacialRecognitionVerify()`会触发错误回调。如果不支持X86设备,可以不用引入。 16 | 17 | **在app级的build.gradle配置** 18 | 19 | ``` 20 | dependencies { 21 | implementation "com.squareup.okhttp3:okhttp:3.11.0" 22 | implementation "com.squareup.okio:okio:1.14.0" 23 | implementation "com.aliyun.dpa:oss-android-sdk:+" 24 | } 25 | ``` 26 | 27 | 注意:离线SDK集成实人认证如果出现`lib/*/libc++_shared.so`报错时,需要在module的build.gradle的android节点下添加如下内容 28 | 29 | ``` 30 | packagingOptions { 31 | pickFirst 'lib/*/libc++_shared.so' 32 | } 33 | ``` -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/androidModuleConfig/geolocation.md: -------------------------------------------------------------------------------- 1 | > **离线打包地图模块与定位模块可以分别配置,不需要单独依赖地图模块。** 2 | 3 | ## 百度定位 4 | 5 | ### 需要拷贝的文件 6 | 7 | **需要引入工程的jar/aar文件** 8 | 9 | 需要将以下jar/aar文件放到工程的libs目录下 10 | 11 | | 路径 | 文件 | 12 | | :-------: | :-------: | 13 | | SDK\libs | baidu-libs-release.aar, geolocation-baidu-release.aar| 14 | 15 | **application节点下配置如下代码** 16 | 17 | ``` 18 | 19 | 20 | ``` 21 | 22 | ## 高德定位 23 | 24 | ### 需要拷贝的文件 25 | 26 | **需要引入工程的jar/aar文件** 27 | 28 | 需要将以下jar/aar文件放到工程的libs目录下 29 | 30 | | 路径 | 文件 | 31 | | :-------: | :-------: | 32 | | SDK\libs | amap-libs-release.aar, geolocation-amap-release.aar | 33 | 34 | **注意:** 35 | + 3.7.6开始不再提供"amap-libs-release.aar"文件 改为gradle集成!geolocation-amap-release.aar还需要继续添加到项目中 36 | 37 | ### 通过gradle集成高德定位SDK 38 | 39 | 在主工程的build.gradle文件配置dependencies 40 | 41 | ``` 42 | android { 43 | xxxxxxxx 44 | defaultConfig { 45 | xxxxxxxx 46 | } 47 | } 48 | dependencies { 49 | xxxxxxxx 50 | implementation('com.amap.api:location:xxx') 51 | } 52 | ``` 53 | 54 | **注意事项:** 55 | + xxx是版本号 版本号通过离线SDK中的demo获取相对应版本 56 | + 本地集成的高德定位SDK需要删除相关aar文件 否则会导致sdk冲突 57 | + 高德定位与高德地图SDK集成冲突 需要注意 如果集成地图无须再配置定位 58 | 59 | ### Androidmainfest.xml文件需要修改的项 60 | 61 | **需要在application节点前添加权限** 62 | 63 | ``` 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | ``` 78 | 79 | **application节点下配置如下代码** 80 | 81 | ``` 82 | 83 | 84 | ``` 85 | 86 | ## 系统定位 87 | 88 | ### 需要拷贝的文件 89 | 90 | **最新SDK使用系统定位已不需要引入任何文件** 91 | 92 | ### Androidmainfest.xml文件需要修改的项 93 | 94 | **需要在application节点前添加权限** 95 | 96 | ``` 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | ``` -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/androidModuleConfig/speech.md: -------------------------------------------------------------------------------- 1 | ## 百度语音 2 | 3 | ### 需要添加的文件 4 | 5 | 将以下文件放入工程的libs下 6 | 7 | | 路径 | 文件名 | 8 | | :-------: | :-------: | 9 | |SDK\libs|speech-release.aar、speech_baidu-release.aar| 10 | 11 | ### AndroidManifest.xml配置 12 | 13 | #### 权限配置 14 | 15 | ``` 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ``` 24 | 25 | #### application节点配置 26 | 27 | ``` 28 | 29 | 30 | 31 | 32 | ``` 33 | 34 | ### dcloud_properties.xml配置 35 | 36 | **dcloud_properties.xml文件在assets/data目录下** 37 | 38 | #### features节点下设置 39 | 40 | ``` 41 | 42 | 43 | 44 | ``` 45 | 46 | 47 | ## 讯飞语音 48 | 49 | ### 需要添加的文件 50 | 51 | 将以下文件放入工程的libs下 52 | 53 | | 路径 | 文件名 | 54 | | :-------: | :-------: | 55 | |SDK\libs|speech-release.aar、speech_ifly-release.aar| 56 | 57 | ### AndroidManifest.xml配置 58 | 59 | #### 权限配置 60 | 61 | ``` 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | ``` 70 | 71 | #### application节点配置 72 | 73 | ``` 74 | 77 | ``` 78 | 79 | ### dcloud_properties.xml配置 80 | 81 | **dcloud_properties.xml文件在assets/data目录下** 82 | 83 | #### features节点下设置 84 | 85 | ``` 86 | 87 | 88 | 89 | ``` -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/androidModuleConfig/statistic.md: -------------------------------------------------------------------------------- 1 | ## 友盟统计 2 | 3 | ### Androidmainfest.xml文件需要修改的项 4 | **需要在application节点前添加权限** 5 | 6 | ```xml 7 | , 8 | , 9 | , 10 | 11 | ``` 12 | 13 | **application节点内配置如下代码** 14 | ```xml 15 | 18 | " 21 | ``` 22 | 23 | 其中`appkey_android`、`channelid_android`分别为友盟平台的appkey和渠道id,请开发者根据自身信息填写。 24 | 25 | 26 | **需要引入工程的jar、aar文件** 27 | 28 | 需要将以下jar、aar文件放到工程的libs目录下 29 | 30 | | 路径 | 文件 | 31 | | :-------: | :-------: | 32 | | SDK\libs | statistic-release.aar, statistic-umeng-release.aar, umeng-abtest-v1.0.1.aar, utdid4all-XXX-proguard.jar(XXX为版本号)| 33 | 34 | **注意** 35 | - 3.3.6及以下版本需要使用alipayutdid.jar来代替utdid4all-XXX-proguard.jar(XXX为版本号) 36 | - 3.8.3及以上版本,友盟SDK改为gradle依赖,需要将libs目录下的umeng-abtest-v1.0.1.aar、utdid4all-XXX-proguard.jar移除 37 | 38 | **通过gradle集成友盟SDK** 39 | 40 | 在主工程的build.gradle文件配置dependencies 41 | ``` 42 | dependencies { 43 | implementation 'com.umeng.umsdk:common:9.6.1' 44 | implementation 'com.umeng.umsdk:asms:1.8.0' 45 | implementation 'com.umeng.umsdk:abtest:1.0.1' 46 | implementation 'com.umeng.umsdk:apm:1.9.1' 47 | } 48 | ``` 49 | 50 | **dcloud_properties.xml需要添加如下代码** 51 | 52 | dcloud_properties.xml文件在assets/data目录下 53 | 54 | ``` xml 55 | 56 | 57 | 58 | ``` 59 | services节点下添加 60 | 61 | ```xml 62 | 63 | ``` 64 | 65 | 66 | ## 友盟统计-google play 67 | 68 | ### Androidmainfest.xml文件需要修改的项 69 | **需要在application节点前添加权限** 70 | 71 | ```xml 72 | , 73 | , 74 | , 75 | 76 | ``` 77 | 78 | **application节点内配置如下代码** 79 | ```xml 80 | 83 | " 86 | ``` 87 | 88 | 其中`appkey_android`、`channelid_android`分别为友盟平台的appkey和渠道id,请开发者根据自身信息填写。 89 | 90 | 91 | **需要引入工程的jar、aar文件** 92 | 93 | 需要将以下jar、aar文件放到工程的libs目录下 94 | 95 | | 路径 | 文件 | 96 | | :-------: | :-------: | 97 | | SDK\libs | statistic-release.aar, statistic-umeng-gp-release.aar| 98 | 99 | 100 | **通过gradle集成友盟SDK** 101 | 102 | 在主工程的build.gradle文件配置dependencies 103 | ``` 104 | dependencies { 105 | implementation 'com.umeng.umsdk:apm:1.9.5' 106 | } 107 | ``` 108 | 109 | **dcloud_properties.xml需要添加如下代码** 110 | 111 | dcloud_properties.xml文件在assets/data目录下 112 | 113 | ``` xml 114 | 115 | 116 | 117 | ``` 118 | services节点下添加 119 | 120 | ```xml 121 | 122 | ``` 123 | 124 | 125 | 126 | 127 | 128 | ## 谷歌统计 129 | 130 | ### Gradle配置 131 | **需要在project级的build.gradle设置** 132 | ``` 133 | 134 | buildscript { 135 | 136 | repositories { 137 | 138 | google() // Google's Maven repository 139 | } 140 | 141 | dependencies { 142 | // ... 143 | classpath 'com.google.gms:google-services:4.2.0' // Google Services plugin 144 | } 145 | } 146 | 147 | allprojects { 148 | // ... 149 | 150 | repositories { 151 | google() // Google's Maven repository 152 | // ... 153 | } 154 | } 155 | 156 | ``` 157 | 158 | **app级的build.gradle设置** 159 | - 在build.gradle最前面添加下面内容 160 | ``` 161 | apply plugin: 'com.google.gms.google-services' // Google Services plugin 162 | ``` 163 | - 在dependencies下添加下面内容 164 | ``` 165 | dependencies { 166 | implementation 'com.google.firebase:firebase-analytics:21.3.0' 167 | } 168 | ``` 169 | 170 | ### 需要拷贝的文件 171 | 172 | **添加google-services.json** 173 | 174 | 在创建好Firebase应用时,会有自动弹框指引下载googie-services.json,请根据指引下载google-services.json文件,并根据官网指引将google-services.json文件放在对应的文件夹下, 然后点击continue. 175 | 176 | 177 | **需要引入工程的aar文件** 178 | 179 | 需要将以下aar文件放到工程的libs目录下 180 | 181 | | 路径 | 文件 | 182 | | :-------: | :-------: | 183 | | SDK\libs |statistic-release.aar, statistic-google-release.aar | 184 | 185 | **dcloud_properties.xml需要添加如下代码** 186 | 187 | dcloud_properties.xml文件在assets/data目录下 188 | 189 | ``` xml 190 | 191 | 192 | 193 | ``` -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/androidModuleConfig/uts.md: -------------------------------------------------------------------------------- 1 | ## UTS 基础模块 2 | >离线SDK 3.7.6+ 版本支持 3 | 4 | ### 需要拷贝的文件 5 | 6 | **需要引入工程的aar文件** 7 | 8 | |路径|文件| 9 | | :-------: | :-------: | 10 | | SDK\libs | utsplugin-release.aar| 11 | 12 | **在app级的build.gradle配置** 13 | 14 | ```groovy 15 | dependencies { 16 | implementation "com.squareup.okhttp3:okhttp:3.12.12" 17 | implementation "androidx.core:core-ktx:1.6.0" 18 | implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.10" 19 | implementation "org.jetbrains.kotlin:kotlin-reflect:1.6.0" 20 | implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8" 21 | implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.8" 22 | implementation "com.github.getActivity:XXPermissions:18.0" 23 | } 24 | ``` -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/androidModuleConfig/x5.md: -------------------------------------------------------------------------------- 1 | ## X5 Webview 配置 2 | 3 | [集成X5需知](https://ask.dcloud.net.cn/article/36806#mattersNeedingAttention) 4 | 5 | 将以下文件放入工程的libs目录下 6 | 7 | ### 5+ APP 8 | 9 | 路径 | 文件名 10 | -|- 11 | SDK/libs| webview-x5-release.aar 12 | 13 | ### uni-app项目 14 | 15 | 路径 | 文件名 16 | -|- 17 | SDK/libs| webview-x5-release.aar、weex_webview-x5-release.aar 18 | 19 | X5不需要单独添加配置,直接拷贝上述文件到libs下即可。 20 | 21 | [DCloud App集成 X5 内核(腾讯浏览服务TBS)说明](https://ask.dcloud.net.cn/article/36806) 22 | 23 | **Tips** 24 | 25 | NDK 配置时请去除x86、64位cpu的配置 建议仅配置"armeabi-v7a" 否则可能无法正常使用X5内核 -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/dependentLibrary.md: -------------------------------------------------------------------------------- 1 | ### iOS 端依赖的第三方库版本说明 2 | 3 | |SDK名称|版本|备注(使用模块)| 4 | |:--|:--|:--| 5 | |百度定位|v2.0.9|Geolocation/百度定位模块 | 6 | |高德定位|v2.10.0|Geolocation/高德定位 | 7 | |百度地图|v6.6.0|Maps/百度地图 | 8 | |高德地图|v9.7.0|Maps/高德地图 | 9 | |微信SDK|v2.0.4|Oauth、Share、Payment/微信| 10 | |AlipaySDK|v15.8.18|Payment/支付宝| 11 | |QQSDK|v3.5.14|Oauth、Share/QQ| 12 | |新浪微博SDK|v3.3.4|Oauth、Share/新浪微博| 13 | |又拍云|v4.1.7|LivePusher(直播推流)| 14 | |友盟UMCommon|v7.4.2|Statistic(友盟统计)| 15 | |友盟UMAPM|v1.8.4|Statistic(友盟统计)| 16 | |IJKPlayer|https://gitee.com/dcloud/IJKMediaFramework 源码编译|VideoPlayer(视频播放)| 17 | |SDWebImage|v5.19.2|基础库/对应的库 libSDWebImage.a | 18 | |Masonry|1.1.0|VideoPlayer/对应的库 Masonry.framework| 19 | |SSZipArchive|2.2.3|基础库/对应的库 libcoreSupport.a| 20 | | ZXing ||Barcode/对应的库 libDCUniZXing.a 源码已修改| 21 | |Google登录|v7.1.0|Oauth/Google| 22 | |Facebook登录|v17.0.0|Oauth/Facebook| 23 | |快手|v3.3.65|UniAD/快手| 24 | |快手内容联盟|v3.3.61|UniAD/快手内容联盟| 25 | |优量汇|v4.14.76|UniAD/优量汇| 26 | |穿山甲|v6.2.0.0|UniAD/穿山甲| 27 | |穿山甲Gromore|v6.2.0.0|UniAD/穿山甲Gromore| 28 | |Sigmob|v4.13.0|UniAD/Sigmob| 29 | |百度百青藤|v5.34|UniAD/百度| 30 | |Google AdMob|v11.2.0|UniAD/AdMob| 31 | |Pangle|v5.5.0.4|UniAD/Pangle| 32 | |Paypal支付|v1.2.0|Payment/Paypal| 33 | |Stripe支付|v23.18.2|Payment/Stripe| 34 | |个推|v2.7.4.2|Push/UniPush| 35 | |个验|v3.0.7.0|Oauth/一键登录| 36 | |Google统计|v10.23.1|Statistic/Google| 37 | |FCM推送|v10.23.1|Push/FCM| 38 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/facialRecognitionVerify.md: -------------------------------------------------------------------------------- 1 | ## 实人认证 2 | 3.7.6+ 版本新增支持 3 | 4 | ### 实人认证开发流程 5 | 详见[实人认证开发指南](https://uniapp.dcloud.net.cn/uniCloud/frv/dev.html) 6 | 7 | ### 添加依赖库及资源 8 | |依赖库|系统库|依赖资源| 9 | |:--|:--|:--| 10 | |**DCUniBase.framework**(动态库)、**DCloudUTSFoundation.framework**(动态库)、uniFacialRecognitionVerify.framework、AliyunFaceAuthFacade.framework、AliyunMobileRPC.framework、AliyunOSSiOS.framework、APBToygerFacade.framework、APPSecuritySDK.framework、BioAuthAPI.framework、BioAuthEngine.framework、deviceiOS.framework、DTFIdentityManager.framework、DTFSensorServices.framework、DTFUIModule.framework、DTFUtility.framework、MPRemoteLogging.framework、ToygerNative.framework、ToygerService.framework|CoreGraphics.framework、Accelerate.framework、SystemConfiguration.framework、AssetsLibrary.framework、CoreTelephony.framework、QuartzCore.framework、CoreFoundation.framework、CoreLocation.framework、ImageIO.framework、CoreMedia.framework、CoreMotion.framework、AVFoundation.framework、WebKit.framework、AudioToolbox.framework、CFNetwork.framework、MobileCoreServices.framework、AdSupport.framework、libresolv.tbd、libz.tbd、libc++.tbd、libc++.1.tbd、libc++abi.tbd、libz.1.2.8.tbd|APBToygerFacade.bundle、BioAuthEngine.bundle、ToygerNative.bundle| 11 | 12 | 13 | 注: 实人认证是UTS插件,需要开发者手动**移除liblibPDRCore.a、liblibWeex.a库**,然后按照动态库的方式添加 14 | **DCUniBase.framework**和**DCloudUTSFoundation.framework** 15 | 16 | ### 隐私权限配置 17 | 在Info.plist文件中添加NSCameraUsageDescription权限以及相关权限描述 -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/geolocation.md: -------------------------------------------------------------------------------- 1 | ## 百度定位 2 | ### 将百度定位模块依赖库及资源添加到工程 3 | 4 | |依赖库|系统库|依赖资源| 5 | |:--|:--|:--| 6 | |libBaiduLocationPlugin.a、libBaiduKeyVerify.a、liblibGeolocation.a、libssl.a、libcrypto.a、BaiduMapAPI_Utils.framework、BaiduMapAPI_Base.framework、BaiduMapAPI_Search.framework、BMKLocationKit.framework|libc++.tbd、libsqlite3.0.tbd、SystemConfiguration.framework、Security.framework、CoreLocation.framework、CoreTelephony.framework|无| 7 | 8 | ### 帐号配置 9 | 1.申请Appkey,如果没有appkey将会导致地图显示不出 10 | 参考[百度地图Appkey申请章节](http://ask.dcloud.net.cn/article/29) 11 | 12 | 2.打开Info.plist文件找到baidu项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey 13 | 注意info.plist中Bundle identifier要和你输入的安全码一致 14 | 15 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/1153.png) 16 | 17 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/2460.png) 18 | 19 | ### 隐私权限配置 20 | 打开Info.plist文件,然后正确添加下方图片中要求的配置 21 | 22 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/geolocation/geolocation.png) 23 | 24 | ## 高德定位 25 | ### 将高德定位模块依赖库及资源添加到工程 26 | 27 | |依赖库|系统库|依赖资源| 28 | |:--|:--|:--| 29 | |libAMapLocationPlugin.a、liblibGeolocation.a、AMapFoundationKit.framework、AMapLocationKit.framework|libc++.tbd、libz.tbd、ExternalAccessory.framework、GLKit.framework、security.framework、CoreTelephony.framework、SystemConfiguration.framework|无| 30 | 31 | ### 帐号配置 32 | 1.申请Appkey,如果没有appkey将会导致地图显示不出 33 | 参考[高德地图Appkey申请章节](http://lbs.amap.com/api/ios-sdk/guide/create-project/get-key) 34 | 35 | 2.打开Info.plist文件找到amap项,如果没有按图片中的格式添加该项,在下图中输入申请的appkey 36 | 37 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/28806.png) 38 | 39 | ### 隐私权限配置 40 | 打开Info.plist文件,然后正确添加下方图片中要求的配置 41 | 42 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/geolocation/geolocation.png) 43 | 44 | ## 系统定位 45 | ### 将系统定位模块依赖库及资源添加到工程 46 | 47 | |依赖库|系统库|依赖资源| 48 | |:--|:--|:--| 49 | |liblibGeolocation.a|Foundation.framework、CoreLocation.framework|无| 50 | 51 | ### 隐私权限配置 52 | 打开Info.plist文件,然后正确添加下方图片中要求的配置 53 | 54 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/geolocation/geolocation.png) -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/livepusher.md: -------------------------------------------------------------------------------- 1 | ## 又拍云直播推流 2 | ### 将又拍云直播推流模块依赖库及资源添加到工程 3 | 4 | |依赖库|系统库|依赖资源| 5 | |:--|:--|:--| 6 | |liblibLivePush.a、libDCUniGPUImage.a、UPLiveSDKDll.framework|AVFoundation.framework、QuartzCore.framework、OpenGLES.framework、AudioToolbox.framework、VideoToolbox.framework、Accelerate.framework、CoreMedia.framework、CoreTelephony.framework、SystemConfiguration.framework、CoreMotion.framework、libz.tbd、libbz2.tbd、libiconv.tbd|无| 7 | 8 | **UPLiveSDKDll.framework这个库是动态库并且不支持模拟器,需要添加到如下图所示的地方:** 9 | 10 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/livepusher/28764.png) 11 | 12 | **注意:如果是自定义组件模式下的live-pusher组件,需要再加上libDCUniLivePush.a库** 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/map.md: -------------------------------------------------------------------------------- 1 | ## 百度地图 (仅vue页面支持) 2 | 3 | ### 添加依赖资源及文件 4 | 5 | |依赖库|系统库|依赖资源| 6 | |:--|:--|:--| 7 | |BaiduMapAPI_Utils.framework 、 BaiduMapAPI_Base.framework、 BaiduMapAPI_Search.framework、 BaiduMapAPI_Map.framework、BMKLocationKit.framework、liblibMap.a、libbmapimp.a、libBaiduKeyVerify.a、libssl.a、libcrypto.a|libc++.tbd、libsqlite3.0.tbd、libz.tbd、QuartzCore.framework 、CoreGraphics.framework 、CoreTelephony.framework、Accelerate.framework、SystemConfiguration.framework 、Security.framework、MapKit.framework 、OpenGLES.framework、CoreLocation.framework|mapapi.bundle| 8 | 9 | ### 账号配置 10 | 1、申请Appkey,如果没有appkey将会导致地图显示不出 11 | 参考[百度地图Appkey申请章节](http://ask.dcloud.net.cn/article/29) 12 | 13 | 2、打开Info.plist文件找到baidu项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey 14 | 注意info.plist中Bundle identifier要和你输入的安全码一致 15 | 16 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/1153.png) 17 | 18 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/2460.png) 19 | 20 | 3.在工程的 info.plist 添加 `NSLocationAlwaysAndWhenInUseUsageDescription` 和 `NSLocationWhenInUseUsageDescription` key,并填写获取权限描述信息 21 | 22 | ![](https://img.cdn.aliyun.dcloud.net.cn/client/doc/ios/locationDes.png) 23 | 24 | ### 常见问题解决 25 | 1.如下图只能看见栅格图可能的原因appkey配置不对、Bundle identifier和安全码不一致、百度地图缓存导致的可以删除app重新安装 26 | 27 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/2461.png) 28 | 29 | 30 | 2.提示appKey校验错误 31 | 32 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/5178.png) 33 | 34 | 在XCode控制台搜索 `baidu maponGetPermissionState` 查看错误码是多少,对比百度开发平台错误信息 35 | 36 | 37 | ## 高德地图 (仅nvue页面支持) 38 | ### 添加依赖资源及文件 39 | 40 | |依赖库|系统库|依赖资源| 41 | |:--|:--|:--| 42 | |liblibMap.a、libAMapImp.a|MapKit.framework、AMapSearchKit.framework、MAMapKit.framework、CoreLocation.framework、AMapFoundationKit.framework、libc++.tbd、GLKit.framework|AMap.bundle、userPosition@2x.png| 43 | 44 | 注:userPosition@2x.png 为显示带方向的用户位置的图标,可替换为自己的设计 45 | 46 | ### 账号配置 47 | 1.在[高德地图官网](http://lbs.amap.com/api/ios-sdk/guide/create-project/get-key)申请Appkey 48 | 49 | 2.在工程的 info.plist 添加 `amap`节点,添加 appkey 信息,如下图 50 | 51 | ![](https://ask.dcloud.net.cn/uploads/article/20181218/4e630bfdb3d418b8847d82d7d4ada95d.png) 52 | 53 | 3.在工程的 info.plist 添加 `NSLocationAlwaysAndWhenInUseUsageDescription` 和 `NSLocationWhenInUseUsageDescription` key,并填写获取权限描述信息 54 | 55 | ![](https://img.cdn.aliyun.dcloud.net.cn/client/doc/ios/locationDes.png) 56 | 57 | ### uni项目的nvue页面中使用地图组件,目前只支持高德地图 58 | 59 | ### 添加依赖资源及文件 60 | 61 | |依赖库|系统库|依赖资源| 62 | |:--|:--|:--| 63 | |libDCUniMap.a、libDCUniAmap.a 、Masonry.framework、AMapSearchKit.framework、MAMapKit.framework、AMapFoundationKit.framework|MapKit.framework、CoreLocation.framework、libc++.tbd、GLKit.framework|AMap.bundle、userPosition@2x.png| 64 | 65 | 注:userPosition@2x.png 为显示带方向的用户位置的图标,可替换为自己的设计 66 | 67 | ### 账号配置 68 | 1.在[高德地图官网](http://lbs.amap.com/api/ios-sdk/guide/create-project/get-key)申请Appkey 69 | 70 | 2.在工程的 info.plist 添加 `amap`节点,添加 appkey 信息,如下图 71 | 72 | ![](https://ask.dcloud.net.cn/uploads/article/20181218/4e630bfdb3d418b8847d82d7d4ada95d.png) 73 | 74 | 3.在工程的 info.plist 添加 `NSLocationAlwaysAndWhenInUseUsageDescription` 和 `NSLocationWhenInUseUsageDescription` key,并填写获取权限描述信息 75 | 76 | ![](https://img.cdn.aliyun.dcloud.net.cn/client/doc/ios/locationDes.png) 77 | 78 | **注意:工程里只能有一个地图,其他的地图功能,要删除info.plist里的key,和对应的库文件,请根据 [功能模块与依赖关系对照表](https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/common?id=%e5%a6%82%e4%bd%95%e9%85%8d%e7%bd%ae%e6%a8%a1%e5%9d%97%e4%b8%89%e6%96%b9sdk) 配置** 79 | 80 | 81 | ## 谷歌地图 82 | 83 | |依赖库|系统库|依赖资源| 84 | |:--|:--|:--| 85 | |libDCUniMap.a 、 libDCUniGoogleMap.a、 GoogleMapsBase.framework、 GoogleMaps.framework、GoogleMapsCore.framework、liblibMap.a|Accelerate.framework、CoreData.framework、CoreGraphics.framework 、 CoreImage.framework 、 CoreLocation.framework 、 CoreTelephony.framework 、 CoreText.framework 、 GLKit.framework 、 ImageIO.framework 、 libc++.tbd 、 libz.tbd 、 Metal.framework 、 OpenGLES.framework 、 QuartzCore.framework 、 SystemConfiguration.framework |GoogleMaps.bundle| 86 | 87 | 88 | ### 账号配置 89 | 1.在[谷歌地图官网](https://developers.google.com/maps)申请APIKey 90 | 91 | 2.在工程的 info.plist 添加 `googleMap`节点,添加 APIKey 信息 92 | 93 | 3.在工程的 info.plist 添加 `NSLocationAlwaysAndWhenInUseUsageDescription` 和 `NSLocationWhenInUseUsageDescription` key,并填写获取权限描述信息 94 | 95 | ![](https://img.cdn.aliyun.dcloud.net.cn/client/doc/ios/locationDes.png) 96 | 97 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/otherModule/appleOauth.md: -------------------------------------------------------------------------------- 1 | HBuilderX 自 2.4.7+ 版本开始支持 `Sign in with Apple` (苹果登录),苹果登录是** iOS13** 新增加的功能,当你的应用使用了第三方登录比如微信登录,同时也需要集成苹果登录,否则提交审核可能会被拒绝。 2 | 3 | ## 使用苹果登录的教程 4 | 5 | ### 使用苹果登录首先需要在苹果开发者后台开启 App 的 `Sign In with Apple` 服务 6 | > 注:只有发布Appstore的应用才能使用苹果登录。企业版开发者账号不支持 `Sign In with Apple` (企业版开发者账号指的是用于企业内部分发App,不能用于发布 App Store 的账号,也就是价格为 299$ 的账号) 7 | 8 | 1.[登录到苹果开发者后台](https://developer.apple.com/) 编辑对应的 `Identifier` 勾选 `Sign In with Apple` 服务并保存 9 | 10 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/appleOauth/46066.png) 11 | 12 | 2.勾选或取消服务,会导致之前的 profile 描述文件失效,不需要新建,只要点击 Edit 重新编辑对应的 profile文件,然后保存下载使用新的profile文件即可 13 | 14 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/appleOauth/46067.png) 15 | 16 | 17 | ### 在 HBuilderX 编辑项目的 manifest.json ,在 App SDK配置中找到苹果登录,并勾选。 18 | 19 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/appleOauth/45801.png) 20 | 21 | > **测试苹果登录服务,需要提交云打包或提交自定义基座打包,只有添加了苹果登录服务提交打包才会将苹果登录模块打进安装包,否则调不到相关方法** 22 | 23 | ### 登录按钮样式 24 | 25 | 苹果对登录按钮样式有要求,请按照苹果要求统一设置登录按钮的样式,否则审核可能会被拒绝 26 | 27 | 需要注意的是: 28 | 29 | - 按钮必须在显著的位置(避免滑动屏幕才能看到) 30 | - 登录按钮有三种外观:白色,带有黑色轮廓线的白色和黑色,其他设计可能会影响审核; 31 | - 按钮圆角范围及按钮最小尺寸也有要求; 32 | - 具体规则请参考苹果 [官方文档](https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple/overview/) 33 | 34 | 下面是原生端默认的几种按钮样式供大家参考(width:130pt, height:30pt, corner radius: 6pt) 35 | 36 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/appleOauth/46408.png) 37 | 38 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/appleOauth/46407.png) 39 | 40 | 41 | ### 示例代码 ([详细 api 请查阅 plus.oauth 文档](https://www.html5plus.org/doc/zh_cn/oauth.html)) 42 | 43 | > **注:因为是 iOS13+ 系统才支持苹果登录,所以建议在App的界面入口判断下,只有 iOS13 才显示Apple登录的选项** 44 | 45 | #### uni-app示例 46 | 47 | ``` 48 | uni.login({ 49 | provider: 'apple', 50 | success: function (loginRes) { 51 | // 登录成功 52 | uni.getUserInfo({ 53 | provider: 'apple', 54 | success() { 55 | // 获取用户信息成功 56 | } 57 | }) 58 | }, 59 | fail: function (err) { 60 | // 登录失败 61 | } 62 | }); 63 | 64 | ``` 65 | 66 | #### 5+App示例 67 | 68 | > **注:因为是 iOS13+ 系统才支持苹果登录,所以在 iOS13 以下设备调用 plus.oauth.getServices 不会返回苹果登录对应的 service 对象** 69 | 70 | ``` 71 | var appleOauth = null; 72 | plus.oauth.getServices(function(services) { 73 | for (var i in services) { 74 | var service = services[i]; 75 | // 获取苹果授权登录对象,苹果授权登录id 为 'apple' iOS13以下系统,不会返回苹果登录对应的 service 76 | if (service.id == 'apple') { 77 | appleOauth = service; 78 | break; 79 | } 80 | } 81 | appleOauth.login( function(oauth){ 82 | // 授权成功,苹果授权返回的信息在 oauth.target.appleInfo 中 83 | }, function(err) { 84 | // 授权失败 error 85 | }, { 86 | // 默认只会请求用户名字信息,如需请求用户邮箱信息,需要设置 scope: 'email' 87 | scope: 'email' 88 | }) 89 | }, function(err) { 90 | // 获取 services 失败 91 | }) 92 | ``` 93 | 94 | ##### 5+ api 返回参数说明 95 | 96 | > 注意:这里是 5+ api 返回的数据,uni 接口对 5+api 做了封装,以实际返回结果为准 97 | 98 | **appleInfo** 99 | 100 | 属性|类型|说明 101 | :--|:--|:--| 102 | user|String|苹果用户唯一标识符 103 | state|String|验证信息状态 104 | email|String|用户共享的可选电子邮件 105 | fullName|Object|用户共享的可选全名 106 | authorizationCode|String|验证数据 107 | identityToken|String|Web令牌(JWT) 108 | realUserStatus|Number|标识用户是否为真实的人 0:当前平台不支持,忽略该值;1:无法确认;2:用户真实性非常高 109 | scope|String|返回信息作用域 110 | 111 | 112 | **fullName** 113 | 114 | 属性|类型|说明 115 | :--|:--|:--| 116 | namePrefix|String|名字前缀,头衔、敬称 117 | givenName|String|名字 118 | middleName|String|中间名 119 | familyName|String|姓 120 | nameSuffix|String|名字后缀,学位、荣誉 121 | nickName|String|昵称 122 | 123 | **授权失败 code 说明** 124 | 125 | code|说明 126 | :--|:--| 127 | 1000|未知错误 128 | 1001|取消授权 129 | 1002|返回值无效 130 | 1003|请求未处理 131 | 1004|授权失败 132 | 133 | ### 最后提交云打包或自定义基座打包进行功能测试 134 | 135 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/pay.md: -------------------------------------------------------------------------------- 1 | 目前支持支付宝、微信支付、苹果内购支付、paypal支付、stripe支付: 2 | 3 | 支付插件首先需要到各开放平台申请帐号,查看该[文档](http://ask.dcloud.net.cn/article/71) 4 | 5 | ## 配置支付平台参数 6 | 7 | 在工程中搜索 feature.plist 文件(位于PandoraApi.bundle中),在 Payment-> extend 节点下添加对应平台的配置
8 | **注意:如果用不到的不要配置,以免影响审核** 9 | 10 | ![](https://native-res.dcloud.net.cn/images/uniapp/nativedocs/iOS/payment_feature.png) 11 | 12 | 13 | ## 支付宝 14 | 15 | ### 添加依赖库及资源 16 | 17 | |依赖库|系统库|资源文件| 18 | |:--|:--|:--| 19 | |liblibPayment.a、libalixpayment.a、AlipaySDK.framework|Security.framework、CoreMotion.framework、SystemConfiguration.framework、CFNetwork.framework、libc++.tbd|AlipaySDK.bundle| 20 | 21 | ### 工程配置 22 | 1.在URL Types 中添加配置: identifier 填写 `alixpay` ,URL Schemes 填写 `alix[后面是您在支付宝平台申请的appid]` ,如果没有该项按照图中的格式创建 23 | 24 | ![](https://ask.dcloud.net.cn/uploads/article/20200415/e99c7479d3ff7ebbd6063e5687bcaeac.png) 25 | 26 | 2.在 info.plist 添加 Schemes 白名单配置 27 | 28 | ![](https://ask.dcloud.net.cn/uploads/article/20200415/2547027bea852aa761c90363aed36688.png) 29 | 30 | ## 微信支付 31 | 32 | ### 添加依赖库及资源 33 | | 依赖库 | 系统库 | 资源文件 | 34 | | :-- | :-- | :-- | 35 | |liblibPayment.a、libwxpay.a、libWeChatSDK_pay.a | libsqlite3.0.tbd、libz.tbd、CoreTelephony.framework、SystemConfiguration.framework| 无 | 36 | 37 | 注意:SDK 中的 38 | 39 | - libWeChatSDK_pay.a 为带支付功能的微信SDK,支持微信分享、微信支付及微信授权登录功能 40 | - libWeChatSDK.a 为不带支付功能的SDK,仅支持微信分享和授权登录,**不使用支付功能请添加此库,避免审核被拒** 41 | - 不要同时添加到工程避免冲突 42 | 43 | ### 工程配置 44 | 1.在URL Types 中添加配置: identifier 填写 `weixin` ,URL Schemes 填写`wx[后面是您在微信平台申请的appkey]` ,如果没有该项按照图中的格式创建 45 | 46 | ![](https://ask.dcloud.net.cn/uploads/article/20200415/c12811edad437d8ce204cbdc8ac72803.png) 47 | 48 | 2.在 info.plist 添加 Schemes 白名单配置 49 | 50 | ![](https://ask.dcloud.net.cn/uploads/article/20191203/7bc7afb901b0c2a7b8f057be5cc81a89.png) 51 | 52 | 3.配置Associated Domains(域名) 53 | 54 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/2d348820422e3b02d8a65b8f6c6cd830.png) 55 | 56 | 填写通用链接域名 57 | 58 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 59 | 60 | 4.在info.plist root 节点添加`UniversalLinks`字段,值和您在微信开放平台配置的一致,参考如下:(SDK 3.2.0版本以后 此项已废弃,仅保留字段,配置参数已经位置如步骤5所示) 61 | 62 | ![](https://ask.dcloud.net.cn/uploads/article/20191016/dfc79b582f04429a83bc2640ec26b2e2.png) 63 | 64 | 5.在 info.plist 添加 `weixin`(3.2.0 以前为`weixinoauth`) 项,填写微信 `appid` 及 `UniversalLinks`,值和您在微信开放平台配置的一致,参考如下: 65 | 66 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/weixin_plist.png) 67 | 68 | 6.在工程的 AppDelegate.m 系统通用链接回调方法中调用框架方法如下: 69 | 70 | ``` 71 | - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * __nullable restorableObjects))restorationHandler { 72 | [PDRCore handleSysEvent:PDRCoreSysEventContinueUserActivity withObject:userActivity]; 73 | restorationHandler(nil); 74 | return YES; 75 | } 76 | ``` 77 | 78 | ## 苹果应用内购支付 79 | 80 | ### 添加依赖库及资源 81 | 82 | | 依赖库 | 系统库 | 资源文件 | 83 | | :-- | :-- | :-- | 84 | |liblibPayment.a、libIAPPay.a| StoreKit.framework| 无 | 85 | 86 | ## paypal支付 87 | 注:SDK3.3.7+、iOS13.0+ 88 | 89 | ### 添加依赖库及资源 90 | 91 | |依赖库|系统库|资源文件| 92 | |:--|:--|:--| 93 | |liblibPayment.a、libpaypalpay.a、PayPalCheckout.xcframework|无|无| 94 | 95 | ### 工程配置 96 | 1. 在 info.plist 添加 `paypal` 项,填写`returnUrl`,参考如下 97 | 98 | ![](https://native-res.dcloud.net.cn/images/uniapp/nativedocs/iOS/payment_paypal_returnurl.png) 99 | 100 | ## stripe支付 101 | 注:SDK3.3.7+、iOS13.0+ 102 | 103 | ### 添加依赖库及资源 104 | 105 | |依赖库|系统库|资源文件| 106 | |:--|:--|:--| 107 | |liblibPayment.a、libstripepay.a、StripeApplePay.xcframework、StripeCore.xcframework、StripeUICore.xcframework、Stripe3DS2.xcframework、StripePayments.xcframework、StripePaymentsUI.xcframework、StripePaymentSheet.xcframework|无|无| 108 | 109 | ### 工程配置 110 | 1. 在URL Types 中添加当前应用的自定义URL Schemes,参考如下 111 | ![](https://native-res.dcloud.net.cn/images/uniapp/nativedocs/iOS/payment_stripe_urlscheme.png) 112 | 113 | 2. 在 info.plist 添加 `stripe` 项,填写`returnUrl`,returnUrl为当前应用的自定义URL Schemes参考如下 114 | ![](https://native-res.dcloud.net.cn/images/uniapp/nativedocs/iOS/payment_stripe_returnurl.png) 115 | 116 | 117 | 118 | 119 | 120 | **注意:以上支付方式都需要配置支付平台参数** 121 | 122 | 除苹果支付外,其他支付需在 AppDelegate.m 文件的系统回调方法中调用框架的方法如下 123 | 124 | ``` 125 | - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 126 | { 127 | [PDRCore handleSysEvent:PDRCoreSysEventOpenURL withObject:url]; 128 | return YES; 129 | } 130 | 131 | 132 | - (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary *)options { 133 | [PDRCore handleSysEvent:PDRCoreSysEventOpenURLWithOptions withObject:@[url,options]]; 134 | return YES; 135 | } 136 | 137 | ``` 138 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/push.md: -------------------------------------------------------------------------------- 1 | ## 注意 2 | 1.在工程中搜索 feature.plist 文件(位于PandoraApi.bundle中),在 Push 节点下,确保和下图所示一样 3 | 4 | ![](https://native-res.dcloud.net.cn/images/uniapp/push/unipush-feature-plist.png) 5 | 6 | 可直接复制下面对应的值替换,避免手动输入错误 7 | 8 | ``` 9 | Push 10 | 11 | autostart 12 | 13 | baseclass 14 | PGPush 15 | class 16 | PGPushActualize 17 | global 18 | 19 | server 20 | 21 | class 22 | PGPushServerAct 23 | identifier 24 | com.pushserver 25 | 26 | 27 | ``` 28 | 29 | **注意:uniPush 1.0 和 uniPush2.0的是不同的服务 具体请查看** [uniPush](https://uniapp.dcloud.net.cn/unipush.html) 30 | 31 | ## uniPush 32 | ### 将uniPush模块依赖库及资源添加到工程 33 | 34 | |依赖库|系统库|依赖资源| 35 | |:--|:--|:--| 36 | |liblibPush.a、libUniPush.a、GTSDK.xcframework|libc++.tbd、libsqlite3.tbd、libz.tbd、libresolv.tbd、UserNotifications.framework、Security.framework、MobileCoreServices.framework、SystemConfiguration.framework、CoreLocation.framework、AVFoundation.framework、CoreTelephony.framework、|无| 37 | 38 | **注意: UserNotifications.framework 需要设置为Optional ** 39 | 40 | ### 帐号配置 41 | 1. 在 [开发者后台](https://dev.dcloud.net.cn/) 找到对应App,获取appid 等信息 42 | 2. 在工程的 info.plist 中添加 "getui" 字段,并填写如下信息 43 | 44 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28612.png) 45 | 46 | 47 | ## 个推推送 48 | 49 | ### 将个推推送模块依赖库及资源添加到工程 50 | 51 | |依赖库|系统库|依赖资源| 52 | |:--|:--|:--| 53 | |liblibPush.a、libGeTuiPush.a、GTSDK.xcframework|libc++.tbd、libsqlite3.tbd、libz.tbd、libresolv.tbd、UserNotifications.framework、Security.framework、MobileCoreServices.framework、SystemConfiguration.framework、CoreLocation.framework、AVFoundation.framework、CoreTelephony.framework、|无| 54 | 55 | **注意: UserNotifications.framework 需要设置为Optional ** 56 | 57 | ### 帐号配置 58 | 1. 在 [个推官网](https://dev.getui.com/) 申请App,获取appid 等信息 59 | 2. 在工程的 info.plist 中添加 "getui" 字段,并填写如下信息 60 | 61 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28612.png) 62 | 63 | 64 | ## Google Cloud Message (3.3.7+ 新增) 65 | ### 将FCM模块依赖库及资源添加到工程 66 | 67 | 68 | |依赖库|系统库|依赖资源| 69 | |:--:|:--:|:--:| 70 | |liblibPush.a
libFCMPush.a
FirebaseCore.xcframework,
FirebaseCoreInternal.xcframework
FirebaseInstallations.xcframework,
GoogleDataTransport.xcframework
GoogleUtilities.xcframework
FBLPromises.xcframework
nanopb.xcframework
FirebaseMessaging.xcframework|UserNotifications.framework|GoogleService-Info.plist| 71 | 72 | 73 | 74 | ### 帐号配置 75 | 1. 在 [Firebase官网](https://firebase.google.com/) 创建新项目或找到已创建项目 76 | 2. 下载Firebase生成的 `GoogleService-Info.plist` 加到工程中 77 | 78 | 79 | 80 | 96 | ### 申请带APNS功能的profile文件(缺少该项将导致后台收不到推送) 97 | 1.创建应用程序ID 98 | 登陆iOS Dev Center选择进入iOS Provisioning Portal。 99 | 在Certificates,Identifiers &Profiles中,点iOS Apps的任何一项进入 100 | 在iOS Provisioning Portal中,点击App IDs进入App ID列表。 101 | 创建App ID,如果ID已经存在可以直接跳过此步骤 102 | 103 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28610.png) 104 | 105 | 为App开启Push Notification功能。如果是已经创建的App ID也可以通过设置开启Push Notification功能。 106 | 107 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28609.png) 108 | 109 | 根据实际情况完善App ID信息并提交,注意此处需要指定具体的Bundle ID不要使用通配符。 110 | 111 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28607.png) 112 | 113 | 2. 重新生成新的profile,下载到本地双击导入,并在Code signing 配置中选择该profile文件 114 | 115 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28605.png) 116 | 117 | 118 | ### 生成APNS证书并上传到uniPush或个推平台(缺少该项将导致后台收不到推送) 119 | 如果你之前没有创建过Push证书或者是要重新创建一个新的,请在证书列表下面新建。 120 | 新建证书需要注意选择证书种类(开发证书用于开发和调试使用,生产证书用于App Store发布) 121 | 122 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28608.png) 123 | 124 | 点击Continue后选择证书对应的应用ID,然后继续会出现“About Creating a Certificate Signing Request (CSR)” 125 | 126 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28603.png) 127 | 128 | 129 | 根据它的说明创建Certificate Signing Request。 130 | 131 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28611.png) 132 | 133 | 134 | 然后点击Continue ,上传刚刚生成的 .certSigningRequest文件 点”generate”生成APNs Push Certificate。 135 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28606.png) 136 | 137 | 138 | 下载并双击打开证书,证书打开时会启动“钥匙串访问”工具。 139 | 在“钥匙串访问”中你的证书会显示在“我的证书”中,注意选择“My Certificates” 和”login” 140 | 导出 .p12证书文件 141 | 在“钥匙串访问”中,选择刚刚加进来的证书,选择右键菜单中的“导出“...””。 142 | 143 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28602.jpg) 144 | 145 | 将文件保存为Personal Information Exchange (.p12)格式。 146 | 注意:务必选择证书然后再导出。 147 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/push/28613.png) 148 | 149 | 保存p12文件时,需为其设置密码,上传到uniPush或个推平台 150 | 151 | ### Xcode配置 152 | 在 “Signing&Capabilities” 配置项中,点击左上角的“Capability”按钮,添加“Push Notifications”项 153 | 154 | 155 | 158 | 159 | ### 常见问题排查步骤 160 | 161 | 1. feature.plist 里的 Push结点 是否与 离线SDK文档一致 162 | 2. 确认自己的是push 1.0 还是2.0 的工程 163 | 3. 推送证书 最近有没有变动过 164 | 4. 联系管理员排查 165 | 166 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/share.md: -------------------------------------------------------------------------------- 1 | 目前分享功能支持新浪微博分享、QQ分享、微信分享,分享功能首先需要到各开放平台申请帐号,参考 [文档](http://ask.dcloud.net.cn/article/36) 2 | 3 | ## 新浪微博分享 4 | 5 | ### 添加依赖库及资源 6 | 7 | |依赖库|系统库|依赖资源| 8 | |:--|:--|:--| 9 | |liblibShare.a、libSinaShare.a、libWeiboSDK.a|ImageIO.framework、libsqlite3.0.tbd|WeiboSDK.bundle| 10 | 11 | ### 工程配置 12 | 13 | 1.在 info.plist 中添加 sinaweibo 字段,填入自己帐号的信息,如下图 14 | 15 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/sinaweibo_320_before.png) 16 | 17 | #### 注意 SDK 3.2.0+ 必须按照下图填写 18 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/sinaweibo_plist.png) 19 | 20 | 21 | 2.在工程的 info -> URL types 中添加配置,identifier 填写`com.weibo`,URL Schemes 填写`wb[后面填写appkey]`,如下图所示 22 | 23 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/share/shareweibo1.png) 24 | 25 | 26 | 3.在 info.plist 添加 Schemes 白名单 27 | 28 | ![](https://ask.dcloud.net.cn/uploads/article/20151222/9637d63385bc52fee7cdfd45ee3aee55.png) 29 | 30 | #### 注意 SDK 3.2.0+ 必须按照下图填写 31 | ![](https://img-cdn-aliyun.dcloud.net.cn/nativedocs/nativeplugin/Iosimgs/weibo3_3.jpg) 32 | 33 | 34 | 配置Associated Domains(域名) 35 | 36 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/2d348820422e3b02d8a65b8f6c6cd830.png) 37 | 38 | 填写通用链接域名 39 | 40 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 41 | 42 | 43 | ## QQ分享 44 | 45 | ### 添加依赖库及资源 46 | 47 | |依赖库|系统库|依赖资源| 48 | |:--|:--|:--| 49 | |liblibShare.a、libQQShare.a、TencentOpenAPI.framework|无|无| 50 | 51 | ### 工程配置 52 | 53 | 1.在工程的 info -> URL types 中添加配置,identifier 填写`tencentopenapi `,URL Schemes 填写`tencent[后面填写appid]`,如下图所示 54 | 55 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/share/shareqq1.png) 56 | 57 | 2.在 info.plist 添加 Schemes 白名单 58 | 59 | ![](https://ask.dcloud.net.cn/uploads/article/20150929/9f59a997933e98849dad6289c83cce9d.png) 60 | 61 | 62 | #### 注意 SDK 3.2.0+ 必须按照下图填写 63 | 1. 在 info.plist 中添加 qq 字段,填入自己帐号的信息 64 | 65 | ![](https://img-cdn-aliyun.dcloud.net.cn/nativedocs/nativeplugin/Iosimgs/qq_plist.jpg) 66 | 67 | 2. 配置Associated Domains(域名) 68 | 69 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/2d348820422e3b02d8a65b8f6c6cd830.png) 70 | 71 | 填写通用链接域名 72 | 73 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 74 | 75 | ## 微信分享 76 | ### 添加依赖库及资源 77 | 78 | |依赖库|系统库|依赖资源| 79 | |:--|:--|:--| 80 | |liblibShare.a、libweixinShare.a、libWeChatSDK.a|libsqlite3.0.tbd、libz.tbd、CoreTelephony.framework、SystemConfiguration.framework|无| 81 | 82 | 注意:SDK 中的 83 | 84 | - libWeChatSDK_pay.a 为带支付功能的微信SDK,支持微信分享、微信支付及微信授权登录功能 85 | - libWeChatSDK.a 为不带支付功能的SDK,仅支持微信分享和授权登录,**不使用支付功能请添加此库,避免审核被拒** 86 | - 不要同时添加到工程避免冲突 87 | 88 | ### 工程配置 89 | 90 | 1.在工程的 info -> URL types 中添加配置,identifier 填写`weixin`,URL Schemes 填写`wx[后面填写appid]`,如下图所示 91 | 92 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/share/shareWeixin1.png) 93 | 94 | 2.在 info.plist 添加 Schemes 白名单 95 | 96 | ![](https://ask.dcloud.net.cn/uploads/article/20191203/7bc7afb901b0c2a7b8f057be5cc81a89.png) 97 | 98 | 3.配置Associated Domains(域名) 99 | 100 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/2d348820422e3b02d8a65b8f6c6cd830.png) 101 | 102 | 填写通用链接域名 103 | 104 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 105 | 106 | 4.在info.plist root 节点添加`UniversalLinks`字段,值和您在微信开放平台配置的一致,参考如下:(SDK 3.2.0版本以后 此项已废弃,仅保留字段,配置参数已经位置如步骤5所示) 107 | 108 | ![](https://ask.dcloud.net.cn/uploads/article/20191016/dfc79b582f04429a83bc2640ec26b2e2.png) 109 | 110 | 5.在 info.plist 添加 `weixin`(3.2.0 以前为`weixinoauth`) 项,填写微信 `appid` 及 `UniversalLinks`,值和您在微信开放平台配置的一致,参考如下: 111 | 112 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/weixin_plist.png) 113 | 114 | 6.在工程的 AppDelegate.m 系统通用链接回调方法中调用框架方法如下: 115 | 116 | ``` 117 | - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * __nullable restorableObjects))restorationHandler { 118 | [PDRCore handleSysEvent:PDRCoreSysEventContinueUserActivity withObject:userActivity]; 119 | restorationHandler(nil); 120 | return YES; 121 | } 122 | ``` 123 | 124 | 125 | **注意 :所有分享都需要实现如下方法** 126 | 127 | 在 AppDelegate.m 文件的系统回调方法中调用框架的方法如下 128 | 129 | ``` 130 | - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 131 | { 132 | [PDRCore handleSysEvent:PDRCoreSysEventOpenURL withObject:url]; 133 | return YES; 134 | } 135 | 136 | 137 | - (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary *)options { 138 | [PDRCore handleSysEvent:PDRCoreSysEventOpenURLWithOptions withObject:@[url,options]]; 139 | return YES; 140 | } 141 | 142 | ``` 143 | 144 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/speech.md: -------------------------------------------------------------------------------- 1 | ## 百度语音 2 | ### 将百度语音模块依赖库及资源添加到工程 3 | 4 | |依赖库|系统库|依赖资源| 5 | |:--|:--|:--| 6 | |liblibSpeech.a、libBaiduSpeechSDK.a、libbaiduSpeech.a|libc++.tbd、libz.tbd、libsqlite3.tbd、AudioToolbox.framework、AVFoundation.framework、CFNetwork.framework、CoreLocation.framework、CoreTelephony.framework、SystemConfiguration.framework、GLKit.framework|BDSClientEASRResources文件夹里的资源文件| 7 | 8 | ### 帐号配置 9 | 1.首先到[百度语音官方网站](https://ai.baidu.com/tech/speech/asr) 创建应用获取 appkey 等信息。 10 | 11 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/speech/52565.png) 12 | 13 | 14 | 2.打开info.plist,并创建 baiduspeech 节点,填入自己帐号的信息,按照下图中的格式创建 15 | 16 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/speech/28765.png) 17 | 18 | 3、把BDSClientEASRResources文件夹里的资源文件引入到工程里 19 | 20 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/speech/29526.png) 21 | 22 | 44 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/statistic.md: -------------------------------------------------------------------------------- 1 | ## 友盟统计 2 | ### 将友盟统计模块依赖库及资源添加到工程 3 | 4 | |依赖库|系统库|依赖资源| 5 | |:--|:--|:--| 6 | |liblibStatistic.a、libUmengStatistic.a、UMDevice.xcframework、UMCommon.xcframework、UMAPM.framework|libz.tbd、libsqlite3.tbd、SystemConfiguration.framework、CoreTelephony.framework|无| 7 | 8 | ![](https://native-res.dcloud.net.cn/images/uniapp/statistic/feature_umeng.png) 9 | 10 | ### 帐号配置 11 | 1.到[友盟开放平台](http://www.umeng.com/analytics)申请Appkey 12 | 13 | 2.打开Info.plist文件找到umeng项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey 14 | 15 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/statistic/2117.png) 16 | 17 | **注意:** 18 | IDFA说明 19 | 20 | 从HBuilderX2.2.5版本之后(含2.2.5),基座里集成了友盟v6.0.5统计SDK,因友盟官方,从组件化产品开始,【友盟+】SDK默认采集idfa标识,用来更准确的分析核对数据。对于应用本身没有获取idfa的情况,建议将应用提交至AppStore时按如下方式配置:(以避免被苹果以“应用不含广告功能,但获取了广告标示符IDFA”的而拒绝其上架。) 21 | 22 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/statistic/40552.png) 23 | ### 隐私清单 24 | ![友盟统计隐私清单](https://web-ext-storage.dcloud.net.cn/doc/app/ios/native-ios-statistic-umeng-privacyinfo.jpg) 25 | 26 | 27 | ## Firebase Analytics (3.3.7+ 新增) 28 | ### 将Firebase Analytics模块依赖库及资源添加到工程 29 | 30 | 31 | **需要在/SDK/Bundles/PandoraApi.bundle/feature.plist文件中 修改如下字段** 32 | 33 | ![](https://native-res.dcloud.net.cn/images/uniapp/statistic/feature_google.png) 34 | 35 | 36 | |依赖库|系统库|依赖资源| 37 | |:--:|:--:|:--:| 38 | |liblibStatistic.a
libGoogleStatistic.a
FirebaseCore.xcframework,
FirebaseCoreInternal.xcframework
FirebaseInstallations.xcframework,
GoogleAppMeasurement.xcframework
GoogleAppMeasurementIdentitySupport.xcframework
GoogleUtilities.xcframework
FBLPromises.xcframework
nanopb.xcframework
||GoogleService-Info.plist| 39 | 40 | 41 | 42 | ### 帐号配置 43 | 1. 在 [Firebase官网](https://firebase.google.com/) 创建新项目或找到已创建项目 44 | 2. 下载Firebase生成的 `GoogleService-Info.plist` 加到工程中 45 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/uiwebview.md: -------------------------------------------------------------------------------- 1 | ### Appstore审核反馈废弃UIWebview APIs问题的说明 2 | iOS有UIWebview和WKWebview两种webview。从iOS13开始苹果将UIWebview列为过期API。 3 | 4 | **2020年4月起App Store将不再接受使用UIWebView的新App上架、2020年12月起将不再接受使用UIWebView的App更新。** 5 | 6 | 从HBuilderX 2.2.5起,iOS上默认均已经是WKWebview,除非开发者手动在代码中指定要用UIWebview,否则实际渲染的页面都是在WKWebview里渲染的。 7 | 不过,虽然实际页面是WKWebview渲染的,但App底层引擎源码里仍然有UIWebview的可选引用。Appstore的机审会发现二进制代码中包括对UIWebview的引用,从而引发告警。 8 | 从HBuilderX 2.6.6起,UIWebview从基础引擎中移除,变成可选模块。 9 | 10 | ## iOS UIWebview模块配置 11 | 如果开发者需要在离线打包工程中使用UIWebview功能,需要在自己的离线工程中配置UIWebview模块。 12 | 13 | ### 添加依赖资源及文件 14 | 15 | |依赖库|系统库|依赖资源| 16 | |:--|:--|:--| 17 | |libH5WEUIWebview.a|JavaScriptCore.framework、Foundation.framework、UIKit.framework|无| 18 | -------------------------------------------------------------------------------- /docs/AppDocs/usemodule/iOSModuleConfig/uniad.md: -------------------------------------------------------------------------------- 1 | ## uni-AD概述 2 | uni-AD聚合目前国内流行的广告平台广点通(腾讯)、快手等,支持开屏广告和信息流、激励视频广告。 3 | ## 如何配置广告 4 | 5 | ### 先去dcloud广告联盟[申请账号](https://uniad.dcloud.net.cn) 6 | 7 | ### 然后配置多渠道 8 | 在打包原生工程中找到工程的配置文件-Info.plist ,然后添加marketChannel节点,节点内容格式为:包名|应用标识|广告标识|渠道 如io.dcloud.HB|appid|adid|apple 9 | 10 | 包名:对应xcode里的bundleid,如io.dcloud.HBuilder。 11 | 12 | 应用标识:对应5+或uni-app项目manifest.json中appid。 13 | 14 | 广告标识:联盟ID,开通广告后可在dev.dcloud.net.cn获取,如果没有开通广告,设置值为空即可。 15 | 16 | 渠道:可以填apple。 17 | 18 | ### 再按下面3个步骤配置参数: 19 | 20 | 1.在info.plist文件里加DCLOUD_AD_ID节点,内容为自己申请的广告标识adid 21 | 22 | 2.把marketChannel节点的广告标识换成申请的广告标识。如下图所示: 23 | 24 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/IntegrationProject/gongdqudao.png) 25 | 26 | 3.在info.plist文件里配置NSUserTrackingUsageDescription隐私描述,详细配置可参考如下链接。 27 | 28 | [参考:https://ask.dcloud.net.cn/article/36107](https://ask.dcloud.net.cn/article/36107) 29 | 30 | ## 今日头条穿山甲 31 | ### 添加依赖资源及文件 32 | 33 | |依赖库|系统库|依赖资源| 34 | |:--|:--|:--| 35 | |DCUniAdCsj.xcframework、BUAdSDK.xcframework、CSJMediation.xcframework|Accelerate.framework、AdSupport.framework、AudioToolbox.framework、AVFoundation.framework、CoreGraphics.framework、CoreImage.framework、CoreLocation.framework、CoreMotion.framework、CoreMedia.framework、CoreTelephony.framework、CoreText.framework、ImageIO.framework、JavaScriptCore.framework、MapKit.framework、MediaPlayer.framework、MobileCoreServices.framework、QuartzCore.framework、Security.framework、StoreKit.framework、SystemConfiguration.framework、UIKit.framework、WebKit.framework、DeviceCheck.framework、libbz2.tbd、libc++.tbd、libiconv.tbd、libresolv.9.tbd、libsqlite3.tbd、libxml2.tbd、libz.tbd、libc++abi.tbd|CSJAdSDK.bundle| 36 | 37 | 38 | ## 今日头条穿山甲Gromore(3.5.2+版本支持) 39 | ### 添加依赖资源及文件 40 | 41 | |依赖库|系统库|依赖资源| 42 | |:--|:--|:--| 43 | |DCUniAdGm.xcframework、BUAdSDK.xcframework、CSJMediation.xcframework|Accelerate.framework、AdSupport.framework、AudioToolbox.framework、AVFoundation.framework、CoreGraphics.framework、CoreImage.framework、CoreLocation.framework、CoreMotion.framework、CoreMedia.framework、CoreTelephony.framework、CoreText.framework、ImageIO.framework、JavaScriptCore.framework、MapKit.framework、MediaPlayer.framework、MobileCoreServices.framework、QuartzCore.framework、Security.framework、StoreKit.framework、SystemConfiguration.framework、UIKit.framework、WebKit.framework、DeviceCheck.framework、libbz2.tbd、libc++.tbd、libiconv.tbd、libresolv.9.tbd、libsqlite3.tbd、libxml2.tbd、libz.tbd、libc++abi.tbd|CSJAdSDK.bundle| 44 | 45 | 46 | ## 腾讯优量汇 47 | ### 添加依赖资源及文件 48 | 49 | |依赖库|系统库|依赖资源| 50 | |:--|:--|:--| 51 | |DCUniAdGdt.xcframework、libGDTMobSDK.a|AdSupport.framework、CoreLocation.framework、QuartzCore.framework、SystemConfiguration.framework、CoreTelephony.framework、Security.framework、StoreKit.framework、AVFoundation.framework、WebKit.framework、JavaScriptCore.framework、libz.tbd、libc++.tbd、libxml2.tbd、sqlite3.tbd|无| 52 | 53 | ### 隐私清单 54 | 优量汇的隐私清单需要手动合并到App的隐私清单中内容如下 55 | ![优量汇隐私清单](https://web-ext-storage.dcloud.net.cn/doc/app/ios/uniad-adt-privacyinfo.jpg) 56 | 57 | 58 | ## 快手 59 | ### 添加依赖资源及文件 60 | 61 | |依赖库|系统库|依赖资源| 62 | |:--|:--|:--| 63 | |DCUniAdKs.xcframework、KSAdSDK.xcframework(动态库)|Foundation.framework、UIKit.framework、MobileCoreServices.framework、CoreGraphics.framework、Security.framework、SystemConfiguration.framework、CoreTelephony.framework、AdSupport.framework、CoreData.framework、StoreKit.framework、AVFoundation.framework、MediaPlayer.framework、CoreMedia.framework、WebKit.framework、Accelerate.framework、CoreLocation.framework、AVKit.framework、MessageUI.framework、QuickLook.framework、AddressBook.framework、CoreMotion.framework、libz.tbd、libresolv.9.tbd、libsqlite3.tbd、libc++.tbd、libc++abi.tbd|无| 64 | 65 | 快手广告SDK使用Libs/KSAdSDK.xcframework 66 | 快手内容联盟SDK(包含广告SDK)使用Libs/KSAdSDK.framework 67 | 68 | ## Sigmob 69 | ### 添加依赖资源及文件 70 | 71 | |依赖库|系统库|依赖资源| 72 | |:--|:--|:--| 73 | |DCUniAdSgm.xcframework、WindSDK.xcframework、WindFoundation.xcframework|StoreKit.framework、CFNetwork.framework、CoreMedia.framework、AdSupport.framework、CoreGraphics.framework、AVFoundation.framework、CoreLocation.framework、CoreTelephony.framework、SafariServices.framework、MobileCoreServices.framework、WebKit.framework、SystemConfiguration.framework、ImageIO.framework、libz.tbd、libsqlite3.tbd|无| 74 | 75 | ## 百度百青藤(3.4.1+版本支持) 76 | ### 添加依赖资源及文件 77 | 78 | |依赖库|系统库|依赖资源| 79 | |:--|:--|:--| 80 | |DCUniAdBd.xcframework、BaiduMobAdSDK.framework|StoreKit.framework、SafariServices.framework、MessageUI.framework、CoreMedia.framework、CoreMotion.framework、SystemConfiguration.framework、CoreLocation.framework、CoreTelephony.framework、AVFoundation.framework、AdSupport.framework、Webkit.framework、libc++.tbd|baidumobadsdk.bundle| 81 | 82 | ## uniMP激励视频广告(3.7.13+版本支持) 83 | ### 添加依赖资源及文件 84 | 85 | |依赖库|系统库|依赖资源| 86 | |:--|:--|:--| 87 | |libWeChatSDK.a、DCUniAdWm.xcframework|CoreGraphics.framework、Security.framework、Webkit.framework|无| 88 | 89 | ### 工程配置 90 | 91 | 1.在工程的 info -> URL types 中添加配置,identifier 填写`weixin`,URL Schemes 填写`wx[后面填写appid]`,如下图所示 92 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/share/shareWeixin1.png) 93 | 94 | 2.在 info.plist 添加 Schemes 白名单 95 | ![](https://native-res.dcloud.net.cn/images/uniad/iOS/dcuniad_wxmini_queriesschemes.png) 96 | 97 | 98 | 3.配置Associated Domains(域名),填写通用链接域名 99 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 100 | 101 | 4.在 info.plist 添加 `weixin` 项,填写微信 `appid` 及 `UniversalLinks`,值和您在微信开放平台配置的一致,参考如下: 102 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/weixin_plist.png) 103 | 104 | 105 | ## 注意事项 106 | 107 | 如果出现uni-AD业务状态提醒如下: 108 | 109 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/7-5.png) 110 | 111 | 1、请在Xcode工程中删除未在uni-AD广告平台申请的广告相关的配置(包括库,资源文件等),例如在uni-AD广告平台添加了穿山甲的广告,但没有添加广点通的广告,这时需要删除掉广点通广告的相关配置。 112 | 113 | 2、如果是自己集成的广告(如,穿山甲、广点通),需要在Xcode工程中删除自己集成的广告,同时建议去uni-AD广告平台申请广告。 114 | 115 | 3、以上增强广告配置,如果是uni项目 必须配置上libDCUniAdWeexModule.a 116 | 117 | 118 | 119 | [uni-AD广告联盟开通指南](https://ask.dcloud.net.cn/article/36769) 120 | 121 | [uni-AD广告联盟使用指南](https://ask.dcloud.net.cn/article/36718) 122 | -------------------------------------------------------------------------------- /docs/AppDocs/usesdk/appkey.md: -------------------------------------------------------------------------------- 1 | ### 申请 2 | 1. 登录[开发者中心](https://dev.dcloud.net.cn) 3 | 2. 在应用管理 - 点击应用 - 各平台信息 创建以及查看离线AppKey: 4 | ![avatar](https://native-res.dcloud.net.cn/images/nativesdk/77A2D811-07FA-43cb-B823-85D08181B3E1.png) 5 | 6 | **SHA1的获取请参考该[文章](https://ask.dcloud.net.cn/article/35777)** 7 | 8 | **AppKey不区分debug和release模式,Andorid如需要调试需要使用申请AppKey时的证书** 9 | 10 | ### 配置 11 | 12 | #### Android 13 | 14 | ##### build.gradle配置 15 | 16 | 主APP的build.gradle文件的android节点下配置应用的签名信息,可参考离线配置: 17 | ``` 18 | signingConfigs { 19 | config { 20 | keyAlias '签名别名' 21 | keyPassword '签名密码' 22 | storeFile file('xxx/xxx/xxx.keystore或xxx/xxx/xxx.jks') // 路径为相对路径或绝对路径 23 | storePassword '密码' 24 | v1SigningEnabled true //兼容v1 25 | v2SigningEnabled true //兼容v2 26 | } 27 | } 28 | 29 | buildTypes { 30 | debug { 31 | signingConfig signingConfigs.config 32 | ... 33 | } 34 | release { 35 | signingConfig signingConfigs.config 36 | ... 37 | } 38 | } 39 | ``` 40 | **注意:签名信息需要与后台一致,不一致也会导致appkey校验失败。** 41 | 42 | ##### Androidmanifest.xml配置 43 | 获取到android平台的AppKey后!打开Android项目 配置主APP的Androidmanifest.xml文件, 导航到Application节点,创建meta-data节点,name为dcloud_appkey,value为申请的AppKey如下: 44 | 45 | ``` 46 | 48 | 51 | ``` 52 | 53 | #### IOS 54 | 55 | 请点击下面链接参考IOS平台的配置Appkey章节 56 | 57 | [iOS](https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios) 58 | 59 | 60 | ### 常见问题 61 | 62 | 89 | #### 1. 项目配置都正确怎么还是提示"未配置AppKey或配置错误"? 90 | 91 | 这种情况不用怀疑。还是安装包的信息与你在申请Appkey填写信息不符导致的。 appid+应用包名+签名sha1三者必须与申请填写的信息一致才可以的。 92 | 93 | **android平台 可以按一下步骤检查一下离线项目配置:** 94 | 95 | 1. 查看签名文件是否配置到了主APP的build.gradle。**注意:需要将signingConfigs添加到buildTypes才会生效** 96 | 97 | 2. 查看离线项目中dcloud_control.xml文件中的appid是否与申请AppKey时的appid一致。 98 | 99 |
100 | 101 | 3. 检测离线项目的包名是否申请AppKey时的包名是否一致。 102 | 103 |
104 | 105 | 4. 对比安装包apk文件的SHA1是否与应用后台配置的SHA1一致。 106 | + Android studio调试时提示appkey配置错误,参考[文档](/AppDocs/package/android?id=查看签名信息)获取签名信息与后台配置SHA1对比是否一致。 107 | + 生成正式包时提示appkey配置错误,获取安装包apk文件获取(签名参考下面问题4)与后台配置SHA1对比是否一致。 108 | 109 | 5. 检查dcloud_appkey配置位置是否正确,dcloud_appkey一定要放到Androidmanifest.xml文件的application节点里。 110 | 111 | ```xml 112 | 113 | 116 | 117 | ``` 118 | 119 | #### 2. android平台 怎么创建签名文件?怎么获取签名文件的SHA1? 120 | 121 | 请查看文档[Android平台签名证书(.keystore)生成指南](https://ask.dcloud.net.cn/article/35777) 122 | 123 | #### 3. android平台打包完的apk文件我怎么查看签名信息对比sha1呢? 124 | 125 | + 首先使用解压工具解开apk。 126 | 127 | + 进入meta-inf文件夹,进入命令行模式 输入如下命令 [参考文章](https://www.jianshu.com/p/d141cbcf2476) 128 | ``` 129 | keytool -printcert -file CERT.RSA 130 | ``` 131 | 132 | 133 | -------------------------------------------------------------------------------- /docs/AppDocs/usesdk/iOSReadMe.md: -------------------------------------------------------------------------------- 1 | ## iOS平台-App离线SDK内不同文件的作用 2 | 3 | ``` 4 | |-- uni-app_5+pluginDemo 在uni-app中开发5+插件,详细请看目录里的 .md文件 5 | |-- HBuilder-ExampleDemo 5+app、uni-app项目包含所有模块的离线打包示例工程 6 | |-- HBuilder-Integrate 5+规范的原生插件开发工程,注意这个里面的工程不是打包工程 7 | |-- HBuilder-uniPluginDemo uni-app规范的、基于weex扩展的原生插件开发工程,,注意这个里面的工程不是打包工程 8 | |-- HBuilder-Integrate-Swift.zip 和上面的3一样,只不过是swift版 9 | |-- Feature-iOS.xls 配置表(依赖的库、资源文件、参数配置等) 10 | |-- SDK 工程需要的库文件,.h头文件,配置文件,资源文件 11 | |-- HBuilder-Hello 给用户打5+app、uni-app项目的离线打包工程。 12 | ``` 13 | 14 | 15 | ## SDK/SDK/Libs 目录下主要库的作用 16 | 17 | 其他库的用途在离线包中Feature-iOS.xls文件里有详细描述 18 | 19 | | 主要库 | 作用 | 20 | | :------: | :------: | 21 | | AlipaySDK.framework | 支付宝支付| 22 | | AMapFoundationKit.framework、AMapFoundationKit.framework、 23 | AMapLocationKit.framework、AMapSearchKit.framework、MAMapKit.framework | 高德地图和定位| 24 | | BaiduMapAPI_Base.framework、BaiduMapAPI_Cloud.framework、 25 | BaiduMapAPI_Location.framework、BaiduMapAPI_Map.framework、BaiduMapAPI_Search.framework、BaiduMapAPI_Utils.framework |百度地图和定位| 26 | | BUAdSDK.framework、BUFoundation.framework |穿山甲广告| 27 | | DCUniVideoPublic.framework |video组件和videoPlayer控件的公共库| 28 | | GTSDK.framework |个推消息推送| 29 | | iflyMSC.framework |讯飞语音识别| 30 | | IJKMediaFramework.framework |video组件和videoPlayer控件播放| 31 | | libBaiduSpeechSDK.a |百度语音识别| 32 | | libSDWebImage.a |开源的SDWebImage打出来的库| 33 | | libWeChatSDK_pay.a |微信SDK带支付功能| 34 | | libWeChatSDK.a |微信SDK不带支付功能| 35 | | libWeiboSDK.a |新浪微博SDK| 36 | | QHADSDK.framework |360广告| 37 | | UMAnalytics.framework、UMCommon.framework |友盟统计| 38 | | UPLiveSDKDll.framework |livePusher推流| 39 | 40 | -------------------------------------------------------------------------------- /docs/AppDocs/usesdk/iosOther/3DTouch.md: -------------------------------------------------------------------------------- 1 | Apple最新发布的iPhone 6s (plus) 设备支持3D touch功能,用户可通过重按屏幕上的图标,打开设置的菜单。H5+ SDK已经支持添加应用的快捷菜单,显示效果如下: 2 | 3 | ![](https://ask.dcloud.net.cn/uploads/article/20151029/108bbd09e1614af36bdb14976f09b586.png) 4 | 5 | ### 离线工程配置的方法 6 | 打开离线打包工程的info.plist文件,在文件中添加UIApplicationShortcutItems节点,并在节点下添加item。 7 | 8 | ![](https://ask.dcloud.net.cn/uploads/article/20151029/b266f27aa4a93d13d1c02bc8e4daa252.jpg) 9 | 10 | **各字段值规范如下表** 11 | 12 | 各值的关系请参考上图 13 | 14 | | 节点名 | 节点类型 | 可选性 | 节点说明 | 备注 | 15 | |: -------------:|:-------------:|:---------:| ------------- |:-------------:| 16 | | UIApplicationShortcutItems | Array | 必选 | 图标快捷菜单节点声明 | | 17 | | UIApplicationShortcutItemType | String | 必选 | 菜单类型 | | 18 | | UIApplicationShortcutItemTitle | String | 必选 | 菜单项的标题 | | 19 | | UIApplicationShortcutItemSubtitle | String | 可选 |菜单项的副标题 | | 20 | | UIApplicationShortcutItemIconFile | String | 可选 |指定菜单项显示安装包内自带的图标,相对安装包的根目录位置 | 与UIApplicationShortcutItemIconType节点同时配置时优先级高于UIApplicationShortcutItemIconType| 21 | | UIApplicationShortcutItemIconType | String | 可选 | 指定菜单项显示系统自带图标 | 取值可参考[苹果官方文档](https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplicationShortcutIcon_Class/index.html#//apple_ref/c/tdef/UIApplicationShortcutIconType)| 22 | | UIApplicationShortcutItemUserInfo | String | 可选 |用户自定义的菜单项附加信息 | 附带信息可在应用内通过plus.runtime.arguments获取 | 23 | 24 | 25 | ### App中处理快捷菜单项 26 | 请参考文档[iOS平台支持3D Touch快捷菜单项](http://ask.dcloud.net.cn/article/424) 27 | -------------------------------------------------------------------------------- /docs/AppDocs/usesdk/iosOther/project.md: -------------------------------------------------------------------------------- 1 | ### 设置系统状态栏样式背景 2 | 3 | 关于该设置的具体介绍和可取值参考该[文档](http://ask.dcloud.net.cn/article/33) 4 | 5 | **以下两步缺一不可切记** 6 | 7 | 1.打开info.plist文件找到Statusbarstyle项目(没有该项按下图格式创建),在右侧的列表中选择对应值 8 | ![](https://ask.dcloud.net.cn/uploads/article/20150204/c8ddcbd925ccd6851d1be156c976e159.png) 9 | 10 | 2.找到View controller-based status bar appearance项目(没有该项按下图格式创建),选择NO 11 | 12 | ![](https://ask.dcloud.net.cn/uploads/article/20150305/9fbb0eccb518802ff0a4786fc377010e.png) 13 | 14 | ### 设置系统状态栏背景颜色 15 | 16 | 关于该设置的具体介绍和可取值参考该[文档](http://ask.dcloud.net.cn/article/33) 17 | 18 | 打开info.plist文件找到StatusBarBackground项目(没有该项按下图格式创建),在右侧填入对应值 19 | 20 | ![](https://ask.dcloud.net.cn/uploads/article/20150204/46febdd3bf3fbdd13b081f230880e789.png) 21 | 22 | ### 设置应用沉浸式状态栏 23 | 关于该设置的具体介绍和可取值参考文档[iOS平台设置沉浸式状态栏显示效果](http://ask.dcloud.net.cn/article/118) 24 | 25 | 打开info.plist文件找到UIReserveStatusbarOffset项目(没有该项按下图格式创建),在右侧选择对应值 26 | 27 | ![](https://ask.dcloud.net.cn/uploads/article/20150204/3cf3382fac62b8a29e2e2ea47ca4ed5e.png) 28 | 29 | ### 设置应用是否启动时全屏 30 | 31 | 打开info.plist文件找到Status bar is initially hidden项目(没有该项按下图格式创建),YES为全屏,NO非全屏在右侧选择对应值 32 | 33 | ![](https://ask.dcloud.net.cn/uploads/article/20150226/853902f78d06ed734ca257386ca28f6d.png) 34 | 35 | ### 通过UrlSchemes与第三方应用相互调用 36 | 37 | 关于该设置的具体介绍可参考该[文档](http://ask.dcloud.net.cn/article/64) 38 | 39 | 打开info.plist文件找到URL types项目,按照下图格式添加scheme项目,红圈中输入urlidentifier,绿圈中输入scheme, 40 | 如果需要设置多个scheme,重复上边步骤 41 | 42 | ![](https://ask.dcloud.net.cn/uploads/article/20150204/8cd3d42caa8a7c070fce2edc2a00121d.png) 43 | 44 | ### 后台音乐播放 45 | 46 | 在info.plist中找到Required background modes项目没有则按照下图格式建立,添加一项在弹出的列表中选择App plays audio or streams audio/video using AirPlay 47 | 48 | ![](https://ask.dcloud.net.cn/uploads/article/20150204/3ad6447b3904d78404ca8b15f18afdba.png) 49 | 50 | -------------------------------------------------------------------------------- /docs/AppDocs/usesdk/useHBuilderHello.md: -------------------------------------------------------------------------------- 1 | ### 预备环境 2 | 3 | + AndroidStudio开发环境 4 | + 5+SDK([5+ SDK下载](http://ask.dcloud.net.cn/article/103))。 5 | 6 | ### 离线打包SDK目录说明 7 | + HBuilder-Hello:离线打包演示应用 8 | + HBuilder-Integrate: 5+ SDK 集成和插件开发示例 9 | + libs:SDK库文件目录 10 | + Feature-Android.xls:Android平台各扩展Feature API对应的permission 11 | + Readme.txt:版本说明文件 12 | + UniPlugin-Hello-AS: uni-app 插件开发示例 13 | 14 | ### 导入HBuilder-Hello 15 | 点击Android studio file -> New -> Import Projet... 如下 16 | 17 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/7-2.png) 18 | 19 | 切换到sdk解压目录下,选择HBuilder-Hello项目,点击OK。 20 | 21 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/7-1.png) 22 | 23 | 项目一开始运行会自动编译并下载资源,编译完成之后点击下图中的绿色按钮直接运行即可。 24 | 25 | ![avatar](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5%2BSDK-android/image/7-3.png) 26 | 27 | ### 注意事项 28 | HBuilder-Hello默认集成了所有的功能模块,开发者可以根据自己的需求删除部分功能模块。模块配置可参考Feature-Android.xls文件。 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/NativePlugin/API/ios.md: -------------------------------------------------------------------------------- 1 | ## DCUniModule 2 | 3 | **主要属性说明** 4 | 5 | |参数|类型|说明 6 | |:----|:----|:---- 7 | |uniExecuteQueue|dispatch_queue_t|如果要在特殊队列中执行`module`操作,请自己实现。
默认调度队列将为主队列。 8 | |uniExecuteThread|NSThread|如果要在特殊线程中执行`module`操作,可以新创建一个。
如果实现了 `targetExecuteQueue`,`uniExecuteThread`会被忽略。
默认是主线程。 9 | |uniInstance|DCUniSDKInstance|实例绑定到此`module`。
它可以帮助您获得许多与实例相关的有用属性。 10 | 11 | 12 | ## DCUniComponent 13 | 14 | **主要属性说明** 15 | 16 | |参数|类型|说明 17 | |:----|:----|:---- 18 | |uniInstance|DCUniSDKInstance|组件的实例 19 | |uniSubcomponents|NSArray|该组件的子组件 20 | |uniSupercomponent|DCUniComponent|该组件的父组件 21 | |view|UIView|组件的视图 22 | 23 | 24 | **主要函数说明** 25 | 26 | #### -(void)onCreateComponentWithRef::::(DCUniSDKInstance *)uniInstance; 27 | 28 | 29 | ``` 30 | /** 31 | * 32 | * 33 | * @param ref 组件的标识 34 | * @param type 组件的类型 35 | * @param styles 组件的样式 36 | * @param attributes 组件的属性 37 | * @param events 组件的事件 38 | * @param uniInstance 与组件关联的uniInstance 39 | * 40 | */ 41 | 42 | -(void)onCreateComponentWithRef:(NSString *)ref type:(NSString *)type 43 | styles:(NSDictionary *)styles 44 | attributes:(NSDictionary *)attributes 45 | events:(NSArray *)events uniInstance:(DCUniSDKInstance *)uniInstance; 46 | ``` 47 | 48 | #### - (void)fireEvent::(nullable NSDictionary *)params; 49 | 50 | 51 | ``` 52 | /** 53 | * @abstract 向JS 中的组件触发事件。 54 | * 55 | * @param eventName 要触发的事件的名称 56 | * @param params 要触发的参数 57 | **/ 58 | - (void)fireEvent:(NSString *)eventName params:(nullable NSDictionary *)params; 59 | ``` 60 | 61 | 62 | ## DCUniSDKInstance 63 | 64 | **主要属性说明** 65 | 66 | |参数|类型|说明 67 | |:----|:----|:---- 68 | |viewController|UIViewController|实例的控制器 69 | |instanceId|NSString|实例的标识 70 | |parentInstance|DCUniSDKInstance|父实例 71 | |frame|CGRect|当前实例的frame 72 | 73 | 74 | **主要函数说明** 75 | 76 | #### - (void)reload:(BOOL)forcedReload 77 | 78 | ``` 79 | /*刷新*/ 80 | - (void)reload:(BOOL)forcedReload 81 | ``` 82 | 83 | #### - (void)fireGlobalEvent:(NSString *)eventName params:(NSDictionary *)params; 84 | 85 | 发送全局事件 86 | 87 | |参数|类型|说明 88 | |:----|:----|:---- 89 | |eventName|NSString|事件的名字 90 | |params|NSDictionary|附带的参数 91 | 92 | ``` 93 | /** 94 | * @abstract 向JS中发送事件。 95 | * 96 | * @param eventName 要触发的事件的名称 97 | * @param params 要触发的参数 98 | **/ 99 | - (void)fireGlobalEvent:(NSString *)eventName params:(NSDictionary *)params; 100 | 101 | ``` -------------------------------------------------------------------------------- /docs/NativePlugin/README.md: -------------------------------------------------------------------------------- 1 | ## 简介 2 | 3 | **App原生插件已不再更新维护,推荐插件开发者改用uts插件。uni-app 和 uni-app x 均可使用。[详见](https://doc.dcloud.net.cn/uni-app-x/plugin/uts-plugin.html)** 4 | 5 | 当HBuilderX中提供的能力无法满足App功能需求,需要通过使用Andorid/iOS原生开发实现时,可使用`App离线SDK`开发原生插件来扩展原生能力。 6 | 7 | 根据项目类型,可以通过以下方式扩展开发原生插件 8 | - uni原生插件: 9 | `uni-app`项目中使用,uni-app的js运行在独立的jscore里,而不是webview里,它的原生扩展是基于开源项目[weex](http://doc.weex.io/zh/)架构的扩展机制。 10 | + [Android平台uni原生插件开发教程](/NativePlugin/course/android.md) 11 | + [iOS平台uni原生插件开发教程](/NativePlugin/course/ios.md) 12 | - 5+原生插件: 13 | `5+ App`、`Wap2App`项目中使用,基于Webview的原生扩展,是通过webview桥方式的扩展机制(3.1.5版本之后不支持)。 14 | 15 | 从开发方式相比,uni原生插件开发模式更简单。webview桥方式需要在原生层和js层分别做很多工作,而uni原生插件开发主要在原生层做封装即可。 16 | 从使用方式相比,5+原生插件需要本地离线打包,而uni原生插件不仅支持本地离线打包,还支持在线云端打包,同时插件市场还有很多优秀原生插件可拿来即用。 17 | 18 | > `5+原生插件`将不再继续维护,建议开发者升级应用为`uni-app`项目并使用`uni原生插件`。如需继续使用5+原生插件,请参考以下文档: 19 | - [Android平台5+原生插件开发](http://ask.dcloud.net.cn/article/66) 20 | - [iOS平台5+原生插件开发](http://ask.dcloud.net.cn/article/67) 21 | 22 | ## 功能 23 | #### uni原生插件类型 24 | - Module模式:能力扩展,无嵌入窗体的UI控件。大部分插件都是属于此类,比如调用计步器API。代码写法为通过js进行require,然后调用该插件对象的方法。如涉及一些弹出框、全屏ui,也仍然属于Module模式。类似于前端里的js sdk。 25 | - Component模式:在窗体中内嵌显示某个原生ui组件。比如窗体局部内嵌某个地图厂商的map组件,上下混排其他前端内容,就需要把这个原生地图sdk封装为Component模式。代码写法与vue组件相同,在template里写组件标签。类似于前端里的vue组件。 26 | 27 | uni-app在App端支持双渲染引擎,支持vue和nvue两种页面,vue页面基于webview排版引擎渲染,nvue页面基于优化版的weex原生排版引擎渲染,weex的插件也可以拿到`uni-app`生态中使用。 28 | - vue页面中仅支持使用Module类型的原生插件,不支持调用同步方法返回数据 29 | - nvue页面中支持使用Module和Component两种类型的原生插件。也就是如需实现嵌入页面的ui组件,前提是该页面需要使用nvue编写。 30 | 31 | 32 | #### uni原生插件上线步骤 33 | - 下载App离线SDK 34 | + [Android平台App离线SDK下载](/AppDocs/download/android.md) 35 | + [iOS平台App离线SDK下载](/AppDocs/download/ios.md) 36 | - 配置原生开发环境,在原生环境中开发调试插件业务逻辑 37 | + Android平台需使用AndroidStudio 38 | + iOS平台需XCode11+(需Mac环境) 39 | - 开发调试完成后导出原生库文件 40 | + Android平台可以是jar或aar包 41 | + iOS平台可以是.a或.framework包 42 | - 生成uni原生插件包(zip) 43 | + 配置package.json文件 44 | + 与前面导出的原生库文件一起打包 45 | - 在HX中使用uni原生插件包提交云端打包,验证uni原生插件包是否正确 46 | - 上传uni原生插件包到插件市场审核 47 | - 审核成功后其他开发者可购买、使用uni原生插件 48 | 49 | 50 | ## 注意 51 | 原生插件开发后,可以上插件市场,也可以不上。如内部使用,则无需上架插件市场。 52 | 如需上插件市场,则必须按指定格式压缩为zip包,具体参考[uni原生插件包格式](/NativePlugin/course/package.md),并提供详细的文档及示例。 53 | 54 | #### 云端打包测试退费 55 | 插件开发过程中调测云端打包,可能会超过40M的免费打包额度。如插件开发是为了上插件市场而不是内部使用,则可以在成功上架市场后申请退费。请使用注册账号邮箱发送邮件到bd@dcloud.io进行申请,审核通过后返还测试产生的超限打包费用。 56 | 57 | #### uni原生插件下架 58 | 插件下架会导致已经使用该插件的app无法再打包,这涉及到插件使用者的利益,所以原则上不允许插件下架。如有特殊原因需要下架请使用注册账号邮箱发邮件到service@dcloud.io进行申请,并详细描述下架原因。 59 | 60 | #### uni原生插件更新 61 | 插件作者需注意保持好版本质量和向下兼容。一旦提交市场新版插件,旧版插件就不能再使用。已经使用旧版插件的App,此后再次云打包,会直接集成新版插件。也就是插件的更新不当可能造成已经使用插件的开发者无法及时发布新版应用。 62 | 63 | -------------------------------------------------------------------------------- /docs/NativePlugin/_sidebar.md: -------------------------------------------------------------------------------- 1 | * [概述](README.md) 2 | * uni原生插件开发教程 3 | * [Android 插件开发教程](course/android.md) 4 | * [Android 第三方 SDK 依赖说明](/AppDocs/usemodule/androidModuleConfig/android_Library.md) 5 | * [iOS 插件开发教程](course/ios.md) 6 | * [iOS 第三方 SDK 依赖说明](/AppDocs/usemodule/iOSModuleConfig/dependentLibrary.md) 7 | * [uni原生插件包格式](course/package.md) 8 | * uni原生插件参考手册 9 | * [Android uni原生API参考手册](API/android.md) 10 | * [iOS uni原生API参考手册](API/ios.md) 11 | * uni原生插件使用教程 12 | * [插件使用说明](use/use.md) 13 | * [HBuilderX中使用本地插件](use/use_local_plugin.md) 14 | * [常见问题](use/faq.md) 15 | * 离线打包使用uni原生插件 16 | * [Android 离线打包使用插件](offline_package/android.md) 17 | * [iOS 离线打包使用插件](offline_package/ios.md) -------------------------------------------------------------------------------- /docs/NativePlugin/offline_package/android.md: -------------------------------------------------------------------------------- 1 | # uni-app原生插件集成指南 2 | ## 准备环境 3 | 1. Android studio 4 | 2. [插件市场](https://ext.dcloud.net.cn/) 5 | 3. HBuilderX 6 | 7 | ## 集成示例 8 | #### 1. 打开Android Studio,创建一个新项目 9 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_21.png) 10 | 11 | 12 | #### 2. 下载最新版SDK,[最新版SDK下载地址](/AppDocs/download/android.md) 13 | 14 | 将下载目录/SDK/libs下的lib.5plus.base-release.aar和uniapp-release.aar放入到libs文件夹下(如果需要使用其他功能,可参考SDK中的Feature-Android.xls进行配置)。 15 | 16 | 将下载目录/SDK/assets下的data文件放入项目assets目录下。 17 | 18 | **注意:Android studio默认显示的模式是Android模式,需将模式切换到project下才能看见libs文件夹,如果文件夹不存在,需要手动创建** 19 | 20 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_22.png) 21 | 22 | #### 3. 插件市场下载uni-app插件(此处以RichAlert为例) 23 | 24 | #### 4. 插件资源配置 25 | 将下载的插件解压,将插件中android目录下的aar/jar文件放入libs下,其余文件参考插件文档放入指定文件夹中 26 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_23.png) 27 | 28 | 29 | #### 5. 在assets目录下创建dcloud_uniplugins.json文件 30 | 插件配置信息请参考插件配置文档或插件配置文件package.json 31 | 关于package.json请参考:**[Android uni-app原生插件开发文档](/NativePlugin/course/android?id=插件调试)** 32 | ```json 33 | { 34 | "nativePlugins": [ 35 | { 36 | "plugins": [ 37 | { 38 | "type": "module", 39 | "name": "DCloud-RichAlert", 40 | "class": "uni.dcloud.io.uniplugin_richalert.RichAlertWXModule" 41 | } 42 | ] 43 | } 44 | ] 45 | } 46 | ``` 47 | 48 | #### 6. 配置gradle文件 49 | 添加指定依赖 50 | ``` 51 | dependencies { 52 | implementation fileTree(dir: 'libs', include: ['*.jar']) 53 | implementation fileTree(dir: 'libs', include: ['*.aar']) 54 | 55 | implementation "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0" 56 | implementation "androidx.core:core:1.1.0" 57 | implementation "androidx.fragment:fragment:1.1.0", 58 | implementation "androidx.recyclerview:recyclerview:1.1.0", 59 | implementation "androidx.appcompat:appcompat:1.1.0", 60 | 61 | implementation 'com.alibaba.android:bindingx-core:1.0.3' 62 | implementation 'com.alibaba.android:bindingx_weex_plugin:1.0.3' 63 | implementation 'com.squareup.okhttp:okhttp:2.3.0' 64 | implementation 'com.squareup.okhttp:okhttp-ws:2.3.0' 65 | // 基座需要,必须添加 66 | implementation 'com.github.bumptech.glide:glide:4.9.0' 67 | } 68 | ``` 69 | 其余uni-app离线集成事项请参考:**[Android平台,uni-app离线打包集成要领及注意事项](http://ask.dcloud.net.cn/article/35139)** 70 | 71 | #### 7. 运行 72 | 在HBuilderX中创建uni-app项目并按照插件文档编写相应测试代码 73 | 1. 自定义基座方式运行 74 | 打包自定义基座请参考:**[什么是自定义基座及使用说明](http://ask.dcloud.net.cn/article/35115)** 75 | 2. 导出uni-app资源并运行 76 | 导出方式请参考:**[HBuilderX生成本地打包App资源](http://ask.dcloud.net.cn/question/60254)** 77 | 78 | 示例Github地址:https://github.com/dcloudio/UniPluginPackage 79 | 80 | -------------------------------------------------------------------------------- /docs/NativePlugin/use/faq.md: -------------------------------------------------------------------------------- 1 | ## Q:uni-app原生插件使用的条件是什么? 2 | A:**要求HBuilderX1.4.0及以上版本,并且必须是uni-app项目** 3 | 老版本HBuilder不支持(请迁移到最新版本的HBuilderX),5+APP及Wap2App项目都不支持调用uni-app原生插件。 4 | 5 | ## Q:uni-app原生插件如何支持真机运行? 6 | A:HBuilderX中自带的默认真机运行基座不包含任何uni-app原生插件,所以不支持直接调用uni-app原生插件。 7 | **必须使用[自定义基座](https://ask.dcloud.net.cn/article/35115)才能支持真机运行调用uni-app原生插件** 8 | 9 | ## Q:uni-app原生插件真机运行提示“using unregistered native plugin 'XXX'”? 10 | A:**默认真机运行的基座中不包含任何原生插件,所以不能调用uni原生插件,必须自定义基座** 11 | 12 | - 确定配置了[自定义基座](https://ask.dcloud.net.cn/article/35115),并且勾选了“使用自定义基座”(HBuilderX的菜单"运行"->"运行到手机或模拟器"->"使用自定义基座") 13 | - 确定手机上运行的是配置uni-app原生插件后提交生成的自定义基座,可以尝试删除手机上的自定义基座应用,重新真机运行 14 | 15 | ## Q:已上传插件市场的插件如何下架? 16 | A:插件下架会导致已经使用该插件的app无法再打包,这涉及到插件使用者的利益,所以原则上不允许插件下架。如有特殊原因需要下架请使用注册账号邮箱发邮件到service@dcloud.io进行申请,并详细描述下架原因 17 | 18 | ## Q:如何更新插件 19 | A:插件作者需注意保持好版本质量和向下兼容。一旦提交市场新版插件,旧版插件就不能再使用。已经使用旧版插件的App,此后再次云打包,会直接集成新版插件。也就是插件的更新不当可能造成已经使用插件的开发者无法及时发布新版应用。 20 | 21 | ## Q:iOS平台依赖库冲突如何解决? 22 | 23 | **A: 插件 与 HBuilderX内置模块 使用的库冲突,可以按以下方式解决** 24 | + 首先选择适配 HBuilderX内置模块 使用的库,HBuilderX内置模块使用的库可在SDK中查找 25 | - 插件中去掉冲突的库,在插件文档中告知你的插件使用者在HBuilderX中配置使用 `XXX模块` 才可以正常使用 26 | - 插件中包含冲突的依赖库,在插件文档中告知你的插件使用者冲突时 `配置ios-exclude.txt解决冲突` 27 | + 如果你的插件依赖库不能适配 HBuilderX内置模块 使用的库,请在插件文档中明确告知插件使用者 `XXX`模块 与此插件不兼容,避免插件使用者勾选了相关模块导致了依赖库冲突 28 | + 如果还是不能解决冲突问题,请加入 `原生开发官方QQ交流群` 联系管理员 29 | 30 | **A:两个插件之间的依赖库冲突,这种情况多数是插件使用了相同的库,可以按以下方式解决** 31 | + 如果两个插件是同一作者开发,可能需要复用一些基础库(.a或.framework),在两个插件中同时包含,并确保文件名称相同,同时使用两个插件时会自动去重相同名称的库 32 | + 如果两个插件不是同一作者开发,可能会同时包含独立的三方库(.a或.framework),如果三方库文件名称不同,可以告知你的插件使用者 `配置ios-exclude.txt解决冲突` 33 | 34 | **A:配置ios-exclude.txt解决冲突** 35 | 36 | 如果插件中包含的库(.a或.framework),与 其它插件 或 HBuilderX内置模块 存在冲突,可以配置插件中冲突的库不参与编译打包来解决冲突。 37 | 比如 插件A 中使用的 xxx.a 与其它库冲突,可以在 uni-app项目的 `nativeplugins/插件A/` 目录(云端插件需要手动创建目录)中创建 `ios-exclude.txt` 文件,文件内容如下: 38 | ``` 39 | xxx.a 40 | ``` 41 | 每行写一个文件名,如下图所示: 42 | 43 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/Iosimgs/ios-exclude.png) 44 | 45 | 46 | ## Q: Android平台的依赖库冲突如何解决? 47 | 48 | **A:插件依赖的云端仓储 dependencies 冲突解决** 49 | + 首先配置依赖库使用 [json格式dependencies](/NativePlugin/course/package?id=dependencies),并设置标识 id 属性避免重复引用依赖库, 减少多个插件配置相同依赖库产生冲突 50 | + 如果插件依赖的云端仓储中特定库与 HBuilderX内置模块 存在冲突,可以尝试使用[exclude group](/NativePlugin/course/package?id=dependencies)剥离相关冲突库。并在插件文档中告知你的插件使用者在HBuilderX中配置使用 `XXX模块` 才可以正常使用。 51 | 52 | **A:插件 与 HBuilderX内置模块 包含的依赖库冲突,这种情况多数是两者出现了重复类导致,可以按以下方式解决** 53 | + 首先选择适配 HBuilderX内置模块 使用的依赖库版本(参考[HBuilderX依赖库列表](https://ask.dcloud.net.cn/article/35419)): 54 | - 插件中去掉冲突的依赖库,在插件文档中告知你的插件使用者在HBuilderX中配置使用 `XXX模块` 才可以正常使用 55 | - 插件中包含冲突的依赖库,在插件文档中告知你的插件使用者冲突时 `配置android-exclude.txt解决冲突` 56 | + 如果你的插件依赖库不能适配 HBuilderX内置模块 的依赖库,请在插件文档中明确告知插件使用者 `XXX`模块 与此插件不兼容,避免插件使用者勾选了相关模块导致了依赖库冲突 57 | + 如果还是不能解决冲突问题,请加入 `原生开发官方QQ交流群` 联系管理员 58 | 59 | **A:两个插件之间的依赖库冲突,这种情况多数是插件中的jar/aar包含了相同的类,可以按以下方式解决** 60 | + 如果两个插件是同一作者开发,将可以复用的代码生成独立 jar/aar,在两个插件中同时包含,只要文件名称相同,同时使用两个插件时会自动去掉重复的jar/aar 61 | + 如果两个插件不是同一作者开发,可能会同时包含独立的三方库 jar/aar,如果三方库文件名称不同,可以告知你的插件使用者 `配置android-exclude.txt解决冲突` 62 | 63 | **A:配置android-exclude.txt解决冲突** 64 | 65 | 如果插件中包含的 jar/aar 依赖库,与 其它插件 或 HBuilderX内置模块 存在冲突,可以配置插件中冲突的 jar/aar 库不参与编译打包来解决冲突。 66 | 比如 插件A 中使用的 a_test.jar 与其它库冲突,可以在 uni-app项目的 `nativeplugins/插件A/` 目录(云端插件需要手动创建目录)中创建 `android-exclude.txt` 文件,文件内容如下: 67 | ``` 68 | a_test.jar 69 | ``` 70 | 每行一个文件名,文件名不要包含任何目录路径 71 | 72 | 73 | ## Q:云打包 运行插件提示"XXX"插件不存在? 74 | 75 | **A:按以下步骤检测自己项目:** 76 | + 请使用自定义基座测试自己插件。默认基座并不包含你的插件。 77 | + 确认打包时是否勾选了"XXX"插件。 78 | + 查看插件配置`package.json`这也是多数同学容易犯错的地方。主要检查`class`配置的信息与插件中的aar(iOS端为xxx.a 或者 xxx.framework)是否匹配。 79 | + 插件中依赖库没有添加到配置或者aar(iOS端为xxx.a 或者 xxx.framework)中。多数为离线工程没问题,云打包有问题!认真检查依赖库是否都包含在插件中。 80 | + 以上都不能解决你的问题,请@客服 81 | 82 | ## Q:云打包 运行插件提示"XXX"插件不存在? 83 | 84 | **A:按以下步骤检测自己项目:** 85 | + 请使用自定义基座测试自己插件。默认基座并不包含你的插件。 86 | + 确认打包时是否勾选了"XXX"插件。 87 | + 查看插件配置`package.json`这也是多数同学容易犯错的地方。主要检查`class`配置的信息与插件中的aar(iOS端为xxx.a 或者 xxx.framework)是否匹配。 88 | + 插件中依赖库没有添加到配置或者aar(iOS端为xxx.a 或者 xxx.framework)中。多数为离线工程没问题,云打包有问题!认真检查依赖库是否都包含在插件中。 89 | + 以上都不能解决你的问题,请@客服 90 | 91 | ## Q:云打包后 iOS端调用插件模块闪退了如何解决 92 | **A:按以下步骤检测自己项目:** 93 | + 下载对应版本的离线iOS SDK文件 94 | + Xcode打开`HBuilder-Hello`工程 95 | + 去 [开发者中心](https://dev.dcloud.net.cn/) 找到该项目 生成离线`AppKey` 在`plist`中修改`dcloud_appkey` 96 | + 用IDE `HBuilerX` 导出的该项目的本地App资源 并放到 `HBuilder-Hello/Pandora/apps/`下 97 | + 修改`control.xml` 中的 `appid` 为该项目ID 98 | + 把已经开发好的自定义插件里的所有的 `xxx.a`或者 `xxx.framework`加到 `HBuider`,另外资源文件或者其他修改记得都在工程里配置好 99 | + 运行项目 查看崩溃信息 100 | 101 | ### 自定义插件云打包闪退原因查询步骤 102 | 103 | 1. 先检查自己封装的插件中 数据类型是否对的上 104 | 105 | ``` 106 | - (void)test:(NSArray*)files callback:(DCUniModuleCallback)callback 107 | { 108 | NSString * first =[files objectAtIndex:0]; 109 | } 110 | 简单举例 封装需要传入参数files 原生代码未做类型判断直接调用方法 可能前端传入的是个NSNumber 或者其他类型 objectAtIndex 原生层异常直接Crash 111 | ``` 112 | 建议 插件开发者 做好参数防护 防止crash 113 | 114 | 2. 插件所需plist字段等 是否都添加正确 115 | 116 | 在插件开发过程中,我们通常都是在Xcode里的示例工程里去添加内容到plist中,而云打包时脚本自己动态去创建, 117 | 比如是一个扫描证件类型的插件 如果在插件的package.json 里 没有声明 相机的描述字段 在调用时 可能会出现闪退 118 | 119 | 3. 检查插件需要的第三方资源是否 都已经放在 `ios/BundleResources` 路径下 120 | 121 | 比如Firebase 之类的第三方服务 插件作者需要将 `GoogleService-Info.plist` 加入到工程才可正常调用 122 | 123 | 4. 开发者插件 如果写一些系统类的类别 尽量名字起的特殊一些 减少和其他人写的类别冲突 124 | 125 | ``` 126 | 例如 NSString (md5) md5 很容易重复 而且类别会根据编译顺序执行 可能会产生 意想不到的情况 所以这点也要注意 127 | ``` 128 | 5. 利用Xcode 自带日志查看工具查看闪退原因 129 | ``` 130 | Xcode->Devices And Simulators->View Devices Logs -> Crash 131 | ``` 132 | 装上云打包后的ipa,调用自定义插件功能后闪退,可以连上Xcode,根据上边步骤 查看闪退信息,一般也可以获取有用的信息,便于快速查看 133 | -------------------------------------------------------------------------------- /docs/NativePlugin/use/use.md: -------------------------------------------------------------------------------- 1 | ## 第一步:购买或下载uni-app原生插件 2 | **从HBuilderX1.9.0版本开始,uni原生插件支持设置为免费或收费,为了保护插件开发者权益,收费插件只支持云端打包,不提供插件下载** 3 | - 使用前需先登录[uni原生插件市场](http://ext.dcloud.net.cn/?cat1=5&cat2=51),在插件详情页中购买,免费插件也可以在插件市场0元购。购买后才能够云端打包使用插件 4 | **购买插件时请选择正确的appid,以及绑定正确包名** 5 | - 对于免费的uni原生插件,也可以先下载到本地再提交云端打包(不推荐) 6 | 详情参考:[HBuilderX中使用本地插件](/NativePlugin/use/use_local_plugin.md) 7 | 8 | ## 第二步:使用自定义基座打包uni原生插件 (注:请使用真机运行自定义基座) 9 | 使用uni原生插件必须先提交云端打包才能生效,购买插件后在应用的manifest.json页面的“App原生插件配置”项下点击“选择云端插件”,选择需要打包的插件: 10 | 11 | ![](https://ask.dcloud.net.cn/uploads/article/20190416/1b5297e695ad1536ddafe3c834e9c297.png) 12 | 13 | **如果插件已下载到本地,点击“选择本地插件”,选择需要打包的插件** 14 | 15 | 直接云端打包后无法打log,不利于排错,所以一般先打一个[自定义基座](http://ask.dcloud.net.cn/article/35115),把需要的原生插件打到真机运行基座里,然后在本地写代码调用调试。 16 | 17 | **注意,自定义基座不是正式版,真正发布时,需要再打正式包。使用自定义基座是无法正常升级替换apk的。** 18 | 19 | 20 | ## 第三步:开发调试uni-app原生插件 21 | - 在vue页面或nvue页面引入这个原生插件。 22 | 使用uni.requireNativePlugin的api,参数为插件的id。 23 | 例如: 24 | 25 | ```javascript 26 | const dcRichAlert = uni.requireNativePlugin('DCloud-RichAlert') 27 | ``` 28 | 29 | - 根据插件市场的插件介绍页面的文档编写js代码,调用其能力 30 | 注意如果前端代码需要给原生sdk传路径,则需要传手机文件的绝对路径。 31 | 32 | ## 第四步:打包发布 33 | 使用自定义基座开发调试uni-app原生插件后,不可直接将自定义基座apk作为正式版发布。 34 | 应该重新提交云端打包(不能勾选“自定义基座”)生成正式版本。 -------------------------------------------------------------------------------- /docs/NativePlugin/use/use_local_plugin.md: -------------------------------------------------------------------------------- 1 | 从HBuilderX1.9.0开始uni-app原生插件可以直接在插件市场绑定应用后,直接云端打包生效,避免下载uni-app原生插件到本地后再提交云端打包。 2 | 同时也继续支持将插件下载到本地后再提交云端打包,通常在以下情况使用这种方式: 3 | 4 | - uni-app原生插件开发者,开发后配置提交云端打包验证插件的包格式是否正确 5 | - uni-app原生插件使用者,需要对插件自定义修改(如插件的资源等) 6 | 7 | ## 获取本地uni-app原生插件 8 | ### 插件市场下载免费uni-app原生插件 9 | 可以登录[uni原生插件市场](https://ext.dcloud.net.cn/?cat1=5&cat2=51),在免费的插件详情页中点击“下载for离线打包”下载原生插件(zip格式),解压到HBuilderX的uni-app项目下的“nativeplugins”目录(如不存在则创建),以下是“DCloud-RichAlert”插件举例,它的下载地址是:[https://ext.dcloud.net.cn/plugin?id=36](https://ext.dcloud.net.cn/plugin?id=36) 10 | 下载解压后目录结构如下: 11 | 12 | ![](https://ask.dcloud.net.cn/uploads/article/20190416/499c1b53bb61fa1792d5e47cf088c926.png) 13 | 14 | ### 开发者自己开发uni-app原生插件 15 | 16 | 原生插件开发完成,按上图的格式配置到uni-app项目下的“nativeplugins”目录。 17 | 18 | ## uni-app原生插件本地配置 19 | 将原生插件配置到uni-app项目的“nativeplugins”下,还需要在manifest.json文件的“App原生插件配置”项下点击“选择本地插件”,在列表中选择需要打包生效的插件: 20 | 21 | ![](https://ask.dcloud.net.cn/uploads/article/20190416/bfe0dde508c6652dd79a5820c2ea71ac.png) 22 | 23 | **注意:保存后,需要提交云端打包,(制作自定义基座也属于云端打包)后插件才会生效** 24 | 25 | ## 关于云端打包资源大小超限的说明 26 | 27 | 云端打包资源大小限制40M,如果超限每次打包需支付一定费用。40M—100M,每次打包10元,每增加100M费用增加10元。请登录开发者中心([https://dev.dcloud.net.cn](https://dev.dcloud.net.cn)),选择“打包服务”- “App大小超限充值”进行自助充值后,再提交打包。 28 | 29 | 如果是为了开发uni-app原生插件提交插件市场前的测试打包,大小超限也需付费才能云端打包,插件上线通过审核以后可以申请退还相关打包费用。提供开发者账号及插件链接地址发邮件到 bd@dcloud.io 申请,谢谢! 30 | 31 | ## 使用 Windows 系统提交 iOS 本地插件打包报错的解决方法 32 | 33 | > 如果使用 mac 提交本地插件打包正常,而使用 Windows 系统提交 iOS 本地插件打包时报错,是因为插件包使用的某个 .framework 库中存现软链接,在 Windows 系统上解压后导致软链接失效,打包时导致这个库缺失,所以会报错 34 | 报错如下图: 35 | 36 | ![](https://ask.dcloud.net.cn/uploads/article/20190918/c1d5e07691a68b735a1725ab26760a35.png) 37 | 38 | **解决办法:** 39 | 40 | 1. 依次查看插件iOS目录下面的 .framework 库文件,下面以 `UTDID.framework` 为例,打开后发现 UTDID、Resources、Headers 大小都为 1kb,说明这几个文件既是软链(在Windows上加压后被转换为文本文件,无法链接到真实文件) 41 | 42 | ![](https://ask.dcloud.net.cn/uploads/article/20190918/34a38c1ce14b8a60d4616620dae3d825.png) 43 | 44 | 2. 用记事本打开这几个文件,里面写的就是链接的真实文件目录,(链接的是`/Versions/A/`目录中的文件) 45 | 46 | ![](https://ask.dcloud.net.cn/uploads/article/20190918/f3a25f6ad23b4e8828a2e73a932a602e.png) 47 | 48 | 3. 把真实文件拷贝到这个库的根目录,将其他文件全部删除即可,最终的库文件 49 | 50 | ![](https://ask.dcloud.net.cn/uploads/article/20190918/0df26b80a6af2b0c48c578e28322f871.png) 51 | 52 | 4. 然后重新提交打包即可; 53 | 54 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | ## 简介 2 | uni小程序SDK,是为原生App打造的可运行基于 [uni-app](https://uniapp.dcloud.io/) 开发的小程序前端项目的框架,从而帮助原生App快速获取小程序的能力,效果如下: 3 | 4 | 5 | 6 | ## 基本概念 7 | 8 | ### uni-app 9 | 10 | 首先您需要了解什么是`uni-app`,[uni-app](https://uniapp.dcloud.io/) 是一个使用 [Vue.js](https://vuejs.org/) 开发所有前端应用的框架,开发者编写一套代码,可发布到 H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台,并且在 [HBuilderX](https://www.dcloud.io/hbuilderx.html) 中可直接打包生成 Android、iOS App。了解更多关于 `uni-app` 请点击查看 [uni-app 官网](uni-apphttps://uniapp.dcloud.io/)。 11 | 12 | ### uni小程序SDK 13 | 14 | uni小程序SDK是原生SDK,提供 Android 版本 和 iOS 版本,需要在原生工程中集成,然后即可运行用`uni-app`框架开发的小程序前端项目,一套代码两端运行 15 | 16 | **名词解释** 17 | 18 | - **宿主** :想要构建小程序的原生App,集成uni小程序SDK的宿主 19 | - **小程序** :运行在宿主中的前端代码编写的小程序项目,使用 uni-app 框架开发 20 | - **wgt** :小程序应用资源包,即使用 uni-app 框架开发的项目,导出的小程序应用资源包 21 | - **HBuilderX** :开发 uni-app 的 [IDE 工具](https://www.dcloud.io/hbuilderx.html) 22 | 23 | **注意** 24 | 25 | 1. uni小程序SDK 仅支持使用 uni-app 开发的小程序,不支持纯 wxml 微信小程序运行。但 uni-app 支持使用 wxml 格式的小程序组件。 26 | 2. uni小程序SDK 仅支持 uni-app 的 v3 编译器。使用老版的开发者,需首先保障应用可以运行在 v3 编译模式下。 27 | 28 | ## 特色 29 | uni-app 在 app 端是双渲染引擎,可以像微信那样使用webview渲染,也可以使用改造版的weex进行原生渲染。其中 webview 渲染在 Android 上也同时支持系统webview渲染和x5渲染。 30 | 31 | - **性能** : 32 | uni小程序sdk的性能,与uni-app的app端v3编译器相同,性能超过市面其他小程序引擎。在启动速度、页面加载速度、逻辑层与视图层通信优化等方面均优有更优秀的表现。 33 | - **功能** : 34 | uni小程序sdk的功能,与uni-app的app端功能相同,所有原生能力均可调用。不同于小程序的限制和有限API,uni小程序sdk的功能更加强大。 35 | - 插件生态 36 | [uni-app插件市场](https://ext.dcloud.net.cn/)有大量丰富的插件。 37 | 38 | ## 应用场景 39 | 1. 宿主App构建自己的应用生态,可以面向广泛开发者,也可以定向部分开发者 40 | 2. 原生App利用小程序模式对模块解耦,让不同模块的开发团队各自独立发版,灵活更新 41 | 3. 原生App中部分功能使用uni-app实现,降低开发成本、提升发布效率 42 | 43 | ## 集成流程 44 | 1. 宿主开发者下载uni小程序sdk,根据文档集成到宿主App中 45 | 2. 小程序开发者使用 HBuilderX 创建 uni-app 项目并开发功能,开发阶段可以直接在 HBuilderX 内置基座进行测试,开发完毕后在发行菜单导出wgt包 46 | 3. 宿主开发者将 wgt 集成到宿主App中,可离线集成直接打包进去,也可以在线下载wgt 47 | 4. 通过 uni小程序sdk 的 api 将 wgt 资源部署到运行路径,然后即可跳转到该资源对应的小程序应用中 48 | 5. uni小程序支持 wgt升级,可以在小程序中直接调用 api 在线更新 wgt 资源,即热更新 [参考文档](https://ask.dcloud.net.cn/article/35667) 49 | 50 | ## 注意 51 | - uni小程序sdk 仅支持在原生App中集成使用,不支持 HBuilderX 打包生成的App中集成。如需在uni-app项目中使用,请加QQ群984388064申请 52 | - uni小程序sdk 支持同时运行多个小程序实例,但android平台最多打开三个 53 | - uni 小程序 sdk 无法使用插件市场中付费的原生插件 54 | 55 | ## 案例 56 | - **CSDN App:** Appstore新闻类榜单前十。App内部众多栏目做成小程序形式。[App下载](https://www.csdn.net/apps/download) 57 | - **顺丰速运:** 顺丰速运官方提供查、寄快递,网点查询、邮费查询等相关服务的一站式快递物流服务软件。[App下载](https://a.app.qq.com/o/simple.jsp?pkgname=com.sf.activity)、[AppStore下载](https://apps.apple.com/cn/app/id899529698) 58 | - **驿收发:** 驿收发快递驿站App。[AppStore下载](https://apps.apple.com/cn/app/id1515218332) 59 | - **我i科大:** 河南科技大学移动App。[官方下载](https://download.haust.edu.cn/haust/getApp/ihaust.apk)、[AppStore下载](https://apps.apple.com/cn/app/id1119046005) 60 | - **郑州大学移动校园:** 郑州大学官方校园生活工具App。[官方下载](http://app6.zzu.edu.cn/index.html)、[AppStore下载](https://apps.apple.com/cn/app/id1219859554) 61 | - **多彩洛职:** 洛阳职业技术学院移动App。[官方下载](http://download.lypt.edu.cn/dclz/dclz.apk)、[AppStore下载](https://apps.apple.com/cn/app/id1532844806) 62 | - **大参林百科:** 大参林医药集团股份有限公司智能零售App。[App下载](https://a.app.qq.com/o/simple.jsp?pkgname=com.dsl.newwiki)、[AppStore下载](https://apps.apple.com/cn/app/id1437878101) 63 | - **网易藏宝阁:** 网易官方游戏交易平台。 [App下载](https://a.app.qq.com/o/simple.jsp?pkgname=com.netease.cbg) 64 | - **咪咕视频爱看版:** 咪咕视频爱看版App。[App下载](https://android.myapp.com/myapp/detail.htm?apkName=com.wondertek.miguaikan)、[AppStore下载](https://apps.apple.com/cn/app/id1168490851) 65 | - **剧豆星光:** 帮助线下门店更好的进行积分营销App。[App下载](https://a.app.qq.com/o/simple.jsp?pkgname=com.xar.weichat) 66 | - **国家医保服务平台:** 国家统一的医保服务平台App,为百姓提供参保缴费、信息查询、待遇申请、业务经办等多种使用功能服务。 [App下载](https://a.app.qq.com/o/simple.jsp?pkgname=cn.hsa.app)、[AppStore下载](https://apps.apple.com/cn/app/id1490383593) 67 | - **乐健体育:** 一款智能云端健身App。[App下载](https://a.app.qq.com/o/simple.jsp?pkgname=com.ledreamer.zz) 68 | - **海康威视:** 海康互联App。[官方下载](https://www.me-app.net/Sentinels) 69 | - **伴玩:** 比心陪玩交友平台App。[App下载](https://a.app.qq.com/o/simple.jsp?pkgname=com.wanjiu.heishi) 70 | 71 | 72 | ## FAQ 73 | Q:uni小程序sdk 与 App离线sdk 的差别是什么? 74 | 75 | A:解决两种不同的需求场景,前者的使用场景是你已经有原生App,在此基础上扩展宿主App的小程序能力,或者用小程序替换原生App的部分功能模块,仅支持uni-app并使用v3编译器;后者的使用场景是你没有原生App,用DCloud的工具来开发App,又不想使用云打包,则可以使用App离线sdk打包发布为原生App,App离线sdk支持5+ App、uni-app,不支持wap2app。虽然App离线sdk也可以集成到已有原生App中,但自从uni小程序sdk推出后,将不再推荐这种用法。 76 | 77 | Q:想了解 uni小程序sdk 都有哪些js api,和微信小程序相比如何? 78 | 79 | A:uni小程序sdk的js api比微信小程序更多,不同于微信小程序的“小”的限制,uni小程序sdk的功能更接近于正常的app,没有包体积限制,并且提供了更丰富的api,以支持完整app的开发。文档和演示demo见:[https://uniapp.dcloud.io/](https://uniapp.dcloud.io/) 80 | 81 | Q: uni小程序不需要集成分享、支付等第三方的功能。集成到我的Android项目中APK的体积会增加多少? 82 | 83 | A: 如果排除视频、地图、分享、支付、登录、直播pusher等sdk,只集成[基础模块](UniMPDocs/UseSdk/android?id=unimpsdksdklibs-依赖库说明)。占用APK体积大小如下: 84 | 85 | |cpu型号.so选择|apk占用大小 86 | |:---|:--- 87 | |armeabi-v7a|约7MB左右 88 | |'armeabi-v7a'、'x86'、'arm64-v8a'|约16MB左右 89 | 90 | Q:支持uni小程序的基座与标准的HX基座权限方面有什么变化? 91 | 92 | A:两者权限基本一致,除了uni小程序的基座会增加下列权限,用于支持创建小程序桌面快捷方式 93 | 94 | |权限| 95 | |:---| 96 | |com.android.launcher.permission.INSTALL_SHORTCUT| 97 | |com.android.launcher.permission.UNINSTALL_SHORTCUT| 98 | |com.android.launcher.permission.READ_SETTINGS| 99 | |com.android.launcher2.permission.READ_SETTINGS| 100 | |com.android.launcher3.permission.READ_SETTINGS| 101 | -------------------------------------------------------------------------------- /docs/UniMPDocs/FAQ/android.md: -------------------------------------------------------------------------------- 1 | ## Q: 小程序SDK为什么会存在多个以uni-jsframework开头的文件? 2 | 3 | 集成小程序SDK时为较少集成难度,默认会将所有框架都包含在内,如果需要去除其余框架,可参考[文档](/AppDocs/FAQ/jsframeworkdeclare.md)配置。 4 | 5 | ## Q: Android 内置uni小程序。为什么还会弹窗提示资源文件不存在? 6 | 7 | A: 可以按以下步骤进行验证 8 | 9 | 1、 请检查内置uni小程序资源释放的目录是否正确。在assets下创建apps/(小程序appid)/www目录,不是创建apps.(小程序appid).www文件夹。 10 | 11 | 2、检查是否正确将wgt解压释放到www文件夹中。 12 | 13 | 3、 清理工程缓存。重新编译运行。 14 | 15 | ## Q: Android uni小程序中可以使用NJS吗? 16 | 17 | A:不太推荐使用NJS。uni小程序运行在独立进程内存是不共享的。其次NJS适用于轻量级调用。如果你的业务逻辑比较复杂建议使用原生扩展来实现。性能更高! 18 | 19 | ## Q: Android uni小程序内置应用。wgt升级重启是对的。但是退出后再进入uni小程序 版本又退回去了? 20 | 21 | A:一般是因为wgt资源中的versionCode为空或小于内置应用的版本。在制作wgt包时请先检查versionCode值域!!! 22 | 23 | ## Q: Android uni小程序启动白屏? 24 | 25 | A:请认真阅读文档参考demo示例检查你的项目! 26 | - 检查SDK拷贝资源时部分资源有没有正确拷贝到你的项目中, 27 | - 检查targetSdkVersion 取值范围26~30 28 | - 检查minSdkVersion 取值范围 19~22 注意>=23 一定要配置android:extractNativeLibs="true" 29 | - 检查androidX版本 选择1.0.0版本 30 | - 检查application节点配置信息 android:extractNativeLibs="true" 一定要配置为true 31 | - 查看宿主集成的三方依赖库。可能与小程序SDK不兼容导致的初始化失败 32 | 33 | ## Q: 集成Android uni小程序SDK包变大了50M? 34 | 35 | A:uni小程序示例中包含了大部分的功能模块。开发者可根据宿主需要的功能进行裁剪。需要注意: 36 | 1、可裁剪libs目录下的依赖库功能模块。切记也只能裁剪libs目录下的依赖库。其他sdk资源不能裁剪。 37 | 2、可以修改ndk的cpu支持型号,用户自行选择。例如只需要在真机上运行的话,只需要'armeabi-v7a'既可。 38 | 39 | ## Q: uni小程序不需要集成分享、支付等第三方的功能。集成到我的Android项目中APK的体积会增加多少? 40 | A: 如果排除视频、地图、分享、支付、登录、直播pusher等功只集成[基础模块](/UniMPDocs/UseSdk/android?id=unimpsdksdklibs-%E4%BE%9D%E8%B5%96%E5%BA%93%E8%AF%B4%E6%98%8E)。占用APK体积大小如下: 41 | 42 | |cpu型号.so选择|apk占用大小 43 | |:---|:--- 44 | |armeabi-v7a|约7MB左右 45 | |'armeabi-v7a'、'x86'、'arm64-v8a'|约16MB左右 46 | 47 | ## Q: 集成Android uni小程序支持androidX吗? 48 | 49 | A:3.2.5+版本已支持androidx, 老版本在 gradle.properties 里将android.useAndroidX 和 android.enableJetifier 都设置为 true,然后使用 Android studio 里的工具 Migrate to AndroidX 即可。(慎用不确保所有功能都可以正常运行。建议使用androidx1.0.0版本) 50 | 两个参数的含义说明如下: 51 | android.useAndroidX:当设为 true 时,此标记表示您想立即开始使用 AndroidX。如果缺少此标记,则 Android Studio 会假定此标记已设为 false。 52 | android.enableJetifier:当设为 true 时,此标记表示您想要获得相关的工具支持(通过 Android Gradle 插件),以便将现有第三方库当作针对 AndroidX 编写的库进行自动转化。如果缺少此标记,则 Android Studio 会假定此标记已设为 false。 53 | 54 | ## Q: 如何查看小程序 console日志 55 | 56 | A:修改项目中assets/data/dcloud_control.xml 内部信息。将syncDebug改为true,开启调试模式。 注意正式版需要改为false!!! 修改后查看`io.dcloud.unimp`进程查看log.多开版查看`宿主包名:unimp0~2`进程查看log.TAG为console 57 | 58 | ## Q: 开启混淆打包后小程序运行白屏或UI显示异常? 59 | 60 | A:请检查混淆配置文件。如果未包含以下配置请添加到混淆配置文件中: 61 | 62 | ``` 63 | -keep class com.taobao.weex.** { *; } 64 | -keep class io.dcloud.feature.** { *; } 65 | ``` 66 | 67 | ## Q: 集成SDK后打包运行后。会弹出"xxx模块没有集成"的弹窗? 68 | 69 | A:遇到该问题请按一下步骤进行操作 70 | 71 | 1、检测UniMPSDK中的资源dcloud_properties.xml是否集成,相关模块是否按照`Feature 依赖库说明.xls`配置[详情](/UniMPDocs/UseModule/android/android) 72 | 73 | 2、检测项目的混淆配置是否集成了UniMPSDK中的`proguard.cfg`,没有请集成 74 | 75 | ## Q: gallery-dmcBig-release冲突 76 | 77 | A: 3.0.7版本开始gallery-dmcBig-release.aar合并到uniMPSDK-release.aar中。如果项目集成请删除否则会编译冲突 78 | 79 | ## Q: 关闭前一个小程序紧接着打开另一个小程序会白屏 80 | 81 | A: 小程序关闭时SDK会自动清理前一个小程序的资源数据。不同小程序的清理时间可能不太一样。这时开启另一个小程序需要开发者监听setUniMPOnCloseCallBack事件。再延迟300毫秒左右执行startApp基本上可以解决问题。 82 | 83 | ## Q: 内置小程序资源,更新小程序资源后运行app发现运行小程序是旧版本的小程序资源 84 | 85 | A:内置小程序每次更新资源需要修改小程序的版本号。如果版本号相同则不会更新。 注意versionName、versionCode都需要修改! 86 | 87 | ## Q: 开启uni小程序白屏时间过程,启动过慢。 88 | 89 | A:尽量尽早初始化小程序SDK,页面尽量使用nvue!改造后会大幅度加快启动速度。 90 | 91 | ## Q: 打包aab运行白屏 92 | 93 | A: 请按以下配置修改: 94 | 95 | 1、原生项目主app的AndroidManifest.xml中。application节点配置android:extractNativeLibs="true"。 96 | 97 | 2、原生项目根目录 gradle.properties 配置android.bundle.enableUncompressedNativeLibs=false 98 | 99 | 重新编译打包 100 | 101 | 102 | 103 | ## Q: 部分版本支付宝支付,偶发没有回调的问题,如何解决? 104 | 105 | A:注意两点, 1 activity 换成 AppCompatActivity 2 libs 里面没有用到的aar 尽量去掉。 106 | 107 | 108 | ## Q: uni-app项目 能否集成到android studio的 任意module下的asset中 109 | 110 | A:不可以,默认只能放在app module下。 111 | 112 | 113 | ## Q: unimp支持打开多个小程序实例吗? 114 | 115 | A: 目前最多同时开启3个unimp小程序。超过3个则遵循先入先出的原则关闭早先打开的小程序。需要注意! 116 | 117 | 118 | 119 | ## Q: 打包Android 10上无法启动相机 120 | 121 | A: 在application节点下添加provider节点 122 | 123 | ``` 124 | 129 | 132 | 133 | ``` 134 | 135 | ${apk.applicationId}须替换成应用的包名。 136 | 137 | ## Q: Android uni小程序初始化的时候显示调用隐私数据。如何避免。 138 | 139 | 由于unimp 小程序运行在独进程 会涉及进程初始化。无法控制三方SDK初始化时隐私合规问题。因此建议开发隐私未同意时不要初始化unimpSDK 140 | 141 | ``` 142 | if(隐私协议是否同意) 143 | // 用户同意隐私协议后再初始化sdk 144 | DCUniMPSDK.getInstance().initialize(...) 145 | } 146 | ``` 147 | 148 | A:unimp 初始化时本身是没有获取设备信息的。 149 | 150 | 但是其依赖的oaid库 会获取设备信息, 151 | 152 | unimp 3.4.18版本之前,初始化SDK时,会被默认初始化oaid。 153 | unimp 3.4.18版本之后,开发者可以自己决定oaid的初始化时机。 154 | 155 | 代码如下: 156 | 157 | ``` 158 | DCSDKInitConfig config = new DCSDKInitConfig.Builder() 159 | .setCustomOAID("xxxxxx") 160 | .build(); 161 | ``` 162 | 163 | ## Q: Android 14 宿主进程被杀死,导致功能异常的问题 164 | 165 | Android 14 版本新增 [进程缓存机制] (https://developer.android.com/about/versions/14/behavior-changes-all#cached-apps) 166 | 167 | 导致宿主长期在后台可能被系统缓存回收。针对这种情况,建议在android 14以上设备增加前台服务,避免被宿主进程会缓存回收。 168 | 169 | -------------------------------------------------------------------------------- /docs/UniMPDocs/FAQ/cocoapods.md: -------------------------------------------------------------------------------- 1 | # CocoaPods常见问题 2 | 3 | ## 1 安装 CocoaPods 的问题 4 | 执行 `pod --version` 检查是否有安装 CocoaPods 并查看版本号。 5 | > 若出现 `command not found: pods` 则表示尚未安装 CocoaPods 6 | 打开终端 Terminal( ⌘ + 空格, 输入 Terminal 以打开终端 ),执行: 7 | ``` 8 | sudo gem install cocoapods 9 | ``` 10 | 11 | 更多详情请参阅 [CocoaPods入门](https://guides.cocoapods.org/using/getting-started.html#getting-started) 12 | 若因网络问题无法下载安装 CocoaPods,可考虑使用 Ruby Gems 镜像源: 13 | * 清华 Gems 镜像站: https://mirror.tuna.tsinghua.edu.cn/help/rubygems/ 14 | * Ruby China 镜像站: https://gems.ruby-china.com 15 | 16 | ## 2 连接不上 trunk CDN 的问题 17 | CocoaPods 自 1.8 版本开始默认使用 trunk CDN (https://cdn.cocoapods.org/) 作为 spec 的源,本意是非常好的,避免了需要本地 clone 一份庞大的 Specs 仓库导致每次 update 都要全量更新的问题。然而国内有可能无法访问这个 trunk CDN。 18 | 19 | 常见问题: 20 | 21 | 1. `pod install` 时报错 `CDN: trunk URL couldn't be downloaded` 22 | 23 | 2. `pod repo update` 时报错 `CDN: trunk Repo update failed` 24 | 25 | 以下是几种解决方案。 26 | 27 | ### 方案一:使用代理 28 | 不管是使用旧版 CocoaPods 还是使用镜像源,都不是最优解,为了充分使用 CocoaPods 的特性,最推荐的还是使用代理来解决无法连接 trunk CDN 的问题。 29 | 30 | ### 方案二:手动切换使用官方 Git 源 / 镜像源 31 | > 不推荐此方案,比较繁琐 32 | 1. 检查当前使用的源 33 | 34 | 先执行 pod repo list 查看本机的源有哪些,如果存在一个 master 源 (URL: https://github.com/CocoaPods/Specs.git) 以及一个 trunk 源 (URL: https://cdn.cocoapods.org/),则无需操作下面的第二步,可直接执行 pod repo remove trunk 删除 trunk CDN 源。 35 | 36 | 若使用 1.9.1 或以上版本,应该只存在一个 trunk CDN 源,此时需要手动添加 Git 源 37 | 38 | 2. 添加源 39 | 40 | 添加 [官方 CocoaPods Git 源](https://github.com/CocoaPods/Specs.git) 41 | 42 | 执行 `pod repo add cocoapods https://github.com/CocoaPods/Specs.git` 43 | 44 | 添加 [清华 CocoaPods 镜像源](https://mirror.tuna.tsinghua.edu.cn/help/CocoaPods/) 45 | 46 | 执行 `pod repo add tuna https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git` 47 | 48 | 3. 执行 `pod repo update --verbose` 49 | 50 | 4. 在 iOS 项目根目录下的 `Podfile` 文件里指定源 51 | 52 | 若找不到 `Podfile`,请先 cd 进 iOS 项目的根目录,执行 `pod init` 53 | 54 | 往 `Podfile` 的第一行添加一句 `source https://xxxxx.git` (其中的 URL 为上一步添加的源的 URL) 55 | 56 | 例:使用清华源 57 | ``` 58 | source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' 59 | 60 | target 'MyProject' do 61 | use_frameworks! 62 | end 63 | ``` 64 | 如果没有在 Podfile 里指定 source 的话,1.8 版本以上的 CocoaPods 会自动重新添加并使用 trunk CDN 源,因此每个项目的 Podfile 都需要显式指定 source,非常麻烦。 65 | 66 | ## 3 `pod install` 无法找到项目的问题 67 | 68 | 执行 `pod install` 时可能报如下错误 69 | 70 | > `Unable to find a specification for "XXXXXX"` 71 | 72 | > 或者 73 | 74 | > `CocoaPods could not find compatible versions for pod "XXXXXX"` 75 | 76 | 以下是几种解决方案。 77 | 78 | ### 方案一:更新索引 79 | 1. 执行 `pod repo update --verbose` 更新索引 80 | 81 | 2. 然后执行 `pod update XXXXXX` 更新库( `XXXXXX` 为提示里报错的具体库的名称) 82 | 83 | 3. 最后执行 `pod install` 重新安装 84 | 85 | ### 方案二:删除索引文件,重新加载 86 | 1. 执行 `pod setup` 87 | 88 | 2. 然后执行 `rm ~/Library/Caches/CocoaPods/search_index.json` 删除索引文件 89 | 90 | 3. 最后执行 `pod install` 重新安装(可能需要较长时间) -------------------------------------------------------------------------------- /docs/UniMPDocs/FAQ/ios.md: -------------------------------------------------------------------------------- 1 | ## Q:升级 Xcode 15 运行报错 2 | 3 | A: ⚠️ 使用 Xcode15 运行在 iOS14 及以下低版本的设备时,打开小程序时可能会出现莫名其妙的崩溃问题(也可能是莫名其妙的报错),这是因为新版本 Xcode 编译器对低版本的iOS兼容性存在问题,需要在工程的 build setting -> Other linker flags中添加 -ld64,然后重新运行即可; 4 | 5 | ## Q:原生工程弹窗提示 “HTML5 + Rumtime D” 6 | 7 | ![](https://ask.dcloud.net.cn/uploads/article/20200226/b761ed2d441819a7a369fbffc9ee7586.png) 8 | 9 | A:请参考解决方法 [点击查看详情](https://ask.dcloud.net.cn/article/35963) 10 | 11 | ## Q:提示 打包时未添加 xxx 模块 ... 12 | 13 | ![](https://ask.dcloud.net.cn/uploads/article/20200320/71334000758150ffe0b3440e4f29e3e0.png) 14 | 15 | A: 请参考这个 [教程](https://ask.dcloud.net.cn/docs/#https://ask.dcloud.net.cn/article/36942) 将相关模块的依赖文件集成到原生工程中即可; 16 | 17 | 18 | ## Q:三方库冲突 19 | A:如果您原生工程依赖的三方库与SDK依赖的三方库冲突 20 | 21 | - 源码开源的三方库比如 SDWebImage、ZXing等,建议您使用SDK内置的三方库,移除您之前依赖的三方库,这些库的 .h 头文件存放在 UNMPSDK/Features/inc 路径中的,将对应库的头文件引入到您的工程中使用即可,如果您使用内置的三方库导致原生功能异常,请反馈给我们; 22 | - 源码不开源的三方库比如 高德地图、微信、支付宝等,这类库官方依赖的版本如下表,如果您依赖的版本与SDk依赖的版本一致,你在使用SDK的功能模块时就不需要添加对应的三方库,如果版本不一致,请以高版本为准,如果SDK内使用的版本过低请您反馈给我我们,我们会做升级处理; 23 | - 还有一种解决方法,就是您不使用官方扩展的功能模块,然后按照[文档](/UniMPDocs/Extension/ios.md)自行扩展这部分功能; 24 | 25 | [依赖的三方库版本说明](https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/dependentLibrary) 26 | 27 | ## Q: 之前引用的头文件和资源 现在找不到了 28 | 29 | A:为了解决部分功能库引用了一些第三方库 可能与开发者项目的第三方库重复引用 30 | 我们从`3.0.7`后 对于部分库和资源进行了调整。 31 | 32 | 如果开发者原来工程对资源文件有引用,现在找不到资源文件,请参考下边列表(文件路径去离线SDK下的 `SDK/Bundles/`下寻找) 33 | 34 | |旧资源|新资源| 35 | |:--|:--|:--| 36 | |TZImagePickerController.bundle|DCTZImagePickerController.bundle| 37 | |SVProgressHUD.bundle|DCSVProgressHUD.bundle| 38 | 39 | 40 | 如果开发者原来工程对库的头文件有引用,现在找不到头文件,请参考下边列表(文件路径去离线SDK下的 `SDK/inc/`下寻找) 41 | 42 | `TZImagePickerController` -> `DCTZImagePickerController` 43 | 44 | |旧头文件|新头文件| 45 | |:--|:--|:--| 46 | |TZAssetCell.h|DCTZAssetCell.h| 47 | |TZAssetModel.h|DCTZAssetModel.h| 48 | |TZGifPhotoPreviewController.h|DCTZGifPhotoPreviewController.h| 49 | |TZImageCropManager.h|DCTZImageCropManager.h| 50 | |TZImageManager.h|DCTZImageManager.h| 51 | |TZImagePickerController.h|DCTZImagePickerController.h| 52 | |TZLocationManager.h|DCTZLocationManager.h| 53 | |TZPhotoPickerController.h|DCTZPhotoPickerController.h| 54 | |TZPhotoPreviewCell.h|DCTZPhotoPreviewCell.h| 55 | |TZPhotoPreviewController.h|DCTZPhotoPreviewController.h| 56 | |TZProgressView.h|DCTZProgressView.h| 57 | |TZVideoPlayerController.h|DCTZVideoPlayerController.h| 58 | |UIViewControllerHUD.h|DCUIViewControllerHUD.h| 59 | |NSBundle+TZImagePicker.h|NSBundle+DCTZImagePicker.h| 60 | |UIView+Layout.h|UIView+DCLayout.h| 61 | 62 | 63 | `SVProgressHUD` -> `DCSVProgressHUD` 64 | 65 | |旧头文件|新头文件| 66 | |:--|:--|:--| 67 | |SVIndefiniteAnimatedView.h|DCSVIndefiniteAnimatedView.h| 68 | |SVProgressAnimatedView.h|DCSVProgressAnimatedView.h| 69 | |SVProgressHUD.h|DCSVProgressHUD.h| 70 | |SVRadialGradientLayer.h|DCSVRadialGradientLayer.h| 71 | 72 | `SocketRoket` -> `DCSocketRoket` 73 | 74 | |旧头文件|新头文件| 75 | |:--|:--|:--| 76 | |SRWebSocket.h|DCSRWebSocket.h| 77 | 78 | 79 | 80 | 81 | 82 | ## Q:Main Thread Checker ... 83 | 84 | 集成uni小程序SDK后,打开小程序首页时页面加载非常慢,并且控制台会报`Main Thread Checker ...`的警告,如下图所示 85 | 86 | 87 | 88 | A: 这个警告是 Xcode 的线程检查机制,由于 SDK 内部在子线程中获取了一些UI的属性值,(**注意仅仅是获取UI的属性值,并没有在子线程修改UI的属性**),所以会有这个警告,您也可以再 Xcode 中同时按下 `command + shift + <` 打开设置页面,将 Main Thread Checker 选项取消勾选,然后就不会有这个警告了,如下图所示 89 | 90 | 91 | 92 | ## Q:小程序如何跳转原生页面 93 | 94 | A: 宿主打开小程序实现方式是:获取当前宿主显示的 `UIViewController`,通过`present`或`push`的方式打开小程序对应的 `DCUniMPViewController`,在小程序打开的情况下如果想跳转到原生其他`UIViewController`可以通过下面的方法获取到`DCUniMPViewController`,然后在跳转其他`UIViewController`页面 95 | 96 | ``` 97 | /// 小程序打开状态,调用此方法可获取小程序对应的 DCUniMPViewController 实例 98 | UIViewController *uniMPVC = [DCUniMPSDKEngine getUniMPViewController]; 99 | 100 | ``` 101 | 102 | ## Q:如何隐藏宿主的 TabBar 103 | 104 | A: 如果宿主底层是 `TabBar` 从首页以 `push` 方式打开小程序页面时想隐藏 TabBar,可以通过自定义 `UINavigationController` 类中复写下面的方法来实现 (如果您没有自定义的`UINavigationController` 可以新建一个便于统一管理导航栏的逻辑) 105 | 106 | ``` 107 | - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 108 | { 109 | // 如果非首页就隐藏TabBar,或可判断 viewController 类名来决定是否隐藏 TabBar 110 | if (self.childViewControllers.count >= 1){ 111 | viewController.hidesBottomBarWhenPushed = YES; 112 | } 113 | [super pushViewController:viewController animated:animated]; 114 | } 115 | ``` 116 | 117 | ## Q:push 手势异常 118 | 119 | A: push 方式打开小程序时 由于小程序页面隐藏了导航栏,默认的返回手势会失效,小程序页面会设置 navigationController.interactivePopGestureRecognizer.delegate = self; 让手势生效,但是这样设置后会带来一个问题就是在 rootViewController 页面触发手势后,会导致再次 push 页面的时候无响应,解决方法就是需要在 导航控制器的 rootViewController 页面添加下面的代码控制 interactivePopGestureRecognizer.enabled 120 | 121 | 122 | ``` 123 | - (void)viewDidAppear:(BOOL)animated { 124 | [super viewDidAppear:animated]; 125 | 126 | self.navigationController.interactivePopGestureRecognizer.enabled = NO; 127 | } 128 | 129 | - (void)viewDidDisappear:(BOOL)animated { 130 | [super viewDidDisappear:animated]; 131 | 132 | self.navigationController.interactivePopGestureRecognizer.enabled = YES; 133 | } 134 | ``` 135 | 136 | ## Q:wgt资源释放失败 137 | 138 | A:调用`releaseAppResourceToRunPathWithAppid:` 释放wgt资源是通过调用 SSZipArchive 库(编译在 libcoreSupport.a 库中)的方法将 wgt 资源解压到运行路径中,如果您的项目按照文档集成 UniMPSDK 基础库后 wgt 资源释放失败可以尝试将 libcoreSupport.a 库移除,然后将 `SSZipArchive` 库添加到工程 139 | 140 | 1.如果工程配置了 CocoaPods,可使用 CocoaPods 集成,编辑 podfile 文件,添加下面一行,在执行 `pod install` 141 | 142 | ``` 143 | pod 'SSZipArchive' 144 | ``` 145 | 146 | 2.源码方式集成
147 | 直接将 [SSZipArchive](https://github.com/ZipArchive/ZipArchive) 库的源码添加到工程,注意 SSZipArchive 库需要在工程的 `Build Settings -> Preprocessor Macros -> Debug 和 Release`中分别添加 `HAVE_INTTYPES_H`,`HAVE_PKCRYPT`,`HAVE_STDINT_H`,`HAVE_WZAES`,`HAVE_ZLIB` 这5个宏定义(注意:原有的配置项下不要删除,点击+号添加),如下图所示,然后重新编译运行。 148 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/unimpimgs/sszipmacros.png) -------------------------------------------------------------------------------- /docs/UniMPDocs/SDKDownload/android.md: -------------------------------------------------------------------------------- 1 | **如果您当前集成的 SDK 版本低于 HBuilderX 版本,但是功能都正常的话可以选择不升级 SDK,按照这个 [文档](https://ask.dcloud.net.cn/article/35627) 添加配置可以屏蔽版本不一致的弹窗提示,框架正常情况都是向下兼容的,您也可以查看一下更新日志考虑是否升级 SDK** 2 | 3 | ## UniMPSDK版本说明 4 | 5 | ### UniMPSDK V2版本 6 | 7 | + 支持同时运行多个小程序。也是后续主要维护的版本。V1版本将不再维护更新!需要注意。 8 | + SDK部分类名及API对比V1版本均有调整需参考API文档及示例进行修改! [小程序V2版本功能示例](/UniMPDocs/Sample/android-v2)、[小程序V2版本API文档](/UniMPDocs/API/android-v2); 9 | 10 | ## SDK下载 11 | 12 | **⚠️注意:如果点击无法下载,可右键点击该链接->选择"链接存储为.."进行下载。** 13 | 14 | ### 2024年05月24日发布 15 | 16 | 17 | #### SDK 4.15 版本 18 | 19 | [点击下载SDK-Android@4.15.zip](https://web-ext-storage.dcloud.net.cn/unimpsdk/android/SDK-Android@4.15-20240606.zip) 20 | 21 | #### 更新日志 22 | 23 | + [重要] 修复Android平台 修复 应用长时间处于后台可能报错的Bug [详情](https://ask.dcloud.net.cn/question/189480) 24 | + 其他更新 [详情](https://download1.dcloud.net.cn/hbuilderx/changelog/4.15.2024050802.html) 25 | 26 | 27 | ## 历史版本 28 | > 历史版本仅提供上个正式版本的 SDK 下载 29 | 30 | #### 下载地址 31 | 链接: [https://pan.baidu.com/s/1_aQH2V1Bxngrrm4xsIzpQw?pwd=tfl7](https://pan.baidu.com/s/1_aQH2V1Bxngrrm4xsIzpQw?pwd=tfl7) 密码: tfl7 32 | 33 | 34 | ## 升级SDK注意事项 35 | 36 | + 3.7.3 版本之后,uni-jsframework 修改为内置集成,开发者无需手动处理 37 | + 3.6.15 版本之后,为了支持暗黑模式,新增了一个必须集成的依赖 **androidx.webkit:webkit:1.3.0**,如果未集成此依赖,可能会导致白屏 38 | + 3.5.3 版本之后,新增了一个必须集成的breakpad-build-release.aar,如果未集成此aar会导致项目运行报错 39 | + 更新proguard.cfg混淆配置,文件在SDK文件夹根目录! 40 | + 将文档说的4个必须库全部替换更新uniMPSDK-release.aar、uniapp-release.aar、base_oaid_sdk.aar、android-gif-drawable-release@1.xx.aar。其他aar根据之前版本是否集成选择更新替换。 41 | 42 | 43 | -------------------------------------------------------------------------------- /docs/UniMPDocs/SDKDownload/opensource.md: -------------------------------------------------------------------------------- 1 | ## 源码公开策略 2 | uni小程序sdk可以免费下载使用,但源码公开策略如下: 3 | 4 | 1. 部分功能模块开源地址见:[iOS](https://github.com/dcloudio/H5P.iOS)、[Android](https://github.com/dcloudio/H5P.Android)。 5 | 2. 还有部分源码未提交GitHub,如需获取全部源代码,请发邮件到 bd@dcloud.io 联系。获取源码无需付费,但目前仅针对大型开发商提供源码。 -------------------------------------------------------------------------------- /docs/UniMPDocs/Sample/close.md: -------------------------------------------------------------------------------- 1 | > 2.6.3开始支持此功能 2 | 3 | ## 小程序环境中关闭方法 4 | > 注:需要在集成SDK的原生工程中使用,在 HBuilderX 内置基座运行无效果; 5 | 6 | 小程序中可调用`plus.runtime.quit()`方法关闭自己,返回宿主App 7 | 8 | ``` 9 | plus.runtime.quit() 10 | ``` 11 | 12 | ## 宿主App中关闭方法 13 | 14 | 宿主可以直接调用 sdk 的方法,关闭当前运行的小程序 15 | 16 | **iOS 示例** 17 | 18 | 关闭当前运行的小程序 19 | 20 | ```Objective-C 21 | [DCUniMPSDKEngine closeUniMP]; 22 | ``` 23 | 24 | 当小程序关闭时会触发 DCUniMPSDKEngineDelegate 协议的`uniMPOnClose:`方法 25 | 26 | ```Objective-C 27 | /// 监听关闭小程序的回调方法 28 | - (void)uniMPOnClose:(NSString *)appid { 29 | NSLog(@"小程序 %@ 被关闭了",appid); 30 | } 31 | ``` 32 | 33 | **Android 示例** 34 | 35 | 关闭当前运行的小程序 36 | 37 | ```JAVA 38 | DCUniMPSDK.getInstance().closeCurrentApp() 39 | ``` 40 | 41 | 监听小程序关闭触发事件 42 | 43 | ```JAVA 44 | DCUniMPSDK.getInstance().setUniMPOnCloseCallBack(new DCUniMPSDK.IUniMPOnCloseCallBack() { 45 | @Override 46 | public void onClose(String appid) { 47 | Log.e("unimp", appid+"被关闭了"); 48 | } 49 | }); 50 | ``` -------------------------------------------------------------------------------- /docs/UniMPDocs/Sample/event.md: -------------------------------------------------------------------------------- 1 | # 宿主App与小程序相互通讯 2 | > 注:2.6.10 版本开始支持此功能 3 | 4 | 5 | ## 宿主 App 向小程序发送事件 6 | 7 | ### iOS 平台 8 | 9 | **API** 10 | 11 | ```Objective-C 12 | Class DCUniMPSDKEngine.h 13 | /// 向小程序发送事件 14 | /// @param event 事件名称 15 | /// @param data 数据:NSString 或 NSDictionary 类型 16 | + (void)sendUniMPEvent:(NSString *)event data:(id)data; 17 | ``` 18 | 19 | **示例** 20 | 21 | ```Objective-C 22 | [DCUniMPSDKEngine sendUniMPEvent:@"NativeEvent" data:@{@"msg":@"native message"}]; 23 | ``` 24 | 25 | ### Android 平台 26 | 27 | **API** 28 | 29 | ```java 30 | DCUniMPSDK.getInstance().sendUniMPEvent(event, data) 31 | ``` 32 | 33 | **参数说明** 34 | 35 | |参数|类型|必填|说明 36 | |:----|:----|:----|:---- 37 | |event|String|是|触发事件的event 38 | |data|String或JSON|是|事件的携带参数 39 | 40 | **返回值** 41 | 42 | |类型|说明 43 | |:----|:---- 44 | |boolean|true表示事件通知成功。false表示失败。可通过log查看。 45 | 46 | **示例** 47 | 48 | ```JAVA 49 | JSONObject data = new JSONObject(); 50 | data.put("sj", "点击了关于"); 51 | DCUniMPSDK.getInstance().sendUniMPEvent("gy", data); 52 | ``` 53 | 54 | 55 | ### 小程序平台 56 | 57 | 监听宿主App发送事件 58 | 59 | **示例** 60 | 61 | ```JavaScript 62 | uni.onNativeEventReceive((event,data)=>{ 63 | console.log('接收到宿主App消息:' + event + data); 64 | this.nativeMsg = '接收到宿主App消息 event:' + event + " data: " + data; 65 | }) 66 | ``` 67 | 68 | **参数说明** 69 | 70 | |属性|类型|说明 71 | |:---|:---|:--- 72 | |event|String|事件名称 73 | |data|String或JsonObject|宿主传递的数据 74 | 75 | ## 小程序向宿主 App 发送事件 76 | 77 | ### 小程序平台 78 | 79 | **API** 80 | 81 | 向宿主App发送事件 82 | 83 | ``` 84 | uni.sendNativeEvent(event,callback) 85 | ``` 86 | 87 | **参数说明** 88 | 89 | |属性|类型|说明 90 | |:--|:--|:-- 91 | |event|String|事件名称 92 | |callback|Function|宿主App回调方法。参数可以是 String 或 JsonObject。取决于宿主的实现 93 | 94 | **示例** 95 | 96 | ```JavaScript 97 | // 向宿主App发送事件 98 | uni.sendNativeEvent('unimp-event', { 99 | msg: 'unimp message!!!' 100 | }, ret => { 101 | this.nativeMsg = '宿主App回传的数据:' + ret; 102 | }) 103 | ``` 104 | 105 | 106 | ### iOS 平台 107 | 108 | 当接收到小程序发送的事件会触发 DCUniMPSDKEngineDelegate 的协议方法,需宿主App实现该方法 109 | 110 | **协议方法说明** 111 | 112 | ``` 113 | /// 监听小程序向原生发送事件方法 114 | /// @param event 事件名称 115 | /// @param data 数据:NSString 或 NSDictionary 类型 116 | /// @param callback 回调数据给小程序 117 | - (void)onUniMPEventReceive:(NSString *)event data:(id)data callback:(DCUniMPKeepAliveCallback)callback; 118 | 119 | DCUniMPKeepAliveCallback 说明 120 | /// 回调数据给小程序的 block 定义 121 | /// result:回调参数支持 NSString 或 NSDictionary 类型 122 | /// keepAlive:如果 keepAlive 为 YES,则可以多次回调数据给小程序,反之触发一次后回调方法即被移除 123 | typedef void (^DCUniMPKeepAliveCallback)(id result, BOOL keepAlive); 124 | 125 | ``` 126 | 127 | **示例** 128 | 129 | 130 | ```Objective-C 131 | /// 监听小程序发送的事件方法 132 | - (void)onUniMPEventReceive:(NSString *)event data:(id)data callback:(DCUniMPKeepAliveCallback)callback { 133 | 134 | NSLog(@"Receive UniMP event: %@ data: %@",event,data); 135 | 136 | // 回传数据给小程序 137 | // DCUniMPKeepAliveCallback 用法请查看定义说明 138 | if (callback) { 139 | callback(@"native callback message",NO); 140 | } 141 | } 142 | ``` 143 | 144 | ### Android 平台 145 | 146 | 147 | **API** 148 | 149 | DCUniMPSDK.getInstance().setOnUniMPEventCallBack(callBack) 150 | 设置监听小程序发送给宿主的事件 151 | 152 | 153 | **参数说明** 154 | 155 | |参数|类型|必填|说明 156 | |:----|:----|:----|:---- 157 | |callBack|IOnUniMPEventCallBack|是|小程序触发event事件接口 158 | 159 | **返回值** 160 | 161 | 无 162 | 163 | **示例** 164 | 165 | ```JAVA 166 | DCUniMPSDK.getInstance().setOnUniMPEventCallBack(new DCUniMPSDK.IOnUniMPEventCallBack() { 167 | @Override 168 | public void onUniMPEventReceive(String event, Object data, DCUniMPJSCallback callback) { 169 | Log.d("cs", "onUniMPEventReceive event="+event); 170 | //回传数据给小程序 171 | callback.invoke( "收到消息"); 172 | } 173 | }); 174 | ``` 175 | -------------------------------------------------------------------------------- /docs/UniMPDocs/Sample/menubutton.md: -------------------------------------------------------------------------------- 1 | ## 概念 2 | 胶囊按钮即小程序页面导航栏右侧的按钮,包含`···`菜单按钮和`X`关闭按钮,如下图所示: 3 | > 目前胶囊按钮的样式不支持修改,框架默认会根据导航栏的颜色自适应胶囊按钮的颜色,不过您可以隐藏默认的胶囊按钮,然后自定义实现 4 | 5 | 6 | 7 | ## 自定义菜单项 8 | 点击胶囊按钮左侧的`···`按钮会弹出`ActionSheet`菜单,菜单中的按钮支持自定义,其中上部分的按钮是在小程序中定义,下部分的按钮在宿主中定义,取消按钮为框架默认添加,如下图所示: 9 | 10 | 11 | 12 | ### 宿主中添加菜单按钮 13 | 14 | 宿主添加的菜单按钮在每个页面都会显示 15 | 16 | #### iOS 添加方法 17 | 18 | ```objective-c 19 | // 创建按钮 20 | DCUniMPMenuActionSheetItem *item1 = [[DCUniMPMenuActionSheetItem alloc] initWithTitle:@"Item 1" identifier:@"item1"]; 21 | DCUniMPMenuActionSheetItem *item2 = [[DCUniMPMenuActionSheetItem alloc] initWithTitle:@"Item 2" identifier:@"item2"]; 22 | // 添加到全局配置 23 | [DCUniMPSDKEngine setDefaultMenuItems:@[item1,item2]]; 24 | ``` 25 | 26 | 点击按钮会回调 `DCUniMPSDKEngineDelegate`协议的 `defaultMenuItemClicked:`方法 27 | 28 | ```objective-c 29 | /// 监听菜单按钮点击 30 | - (void)defaultMenuItemClicked:(NSString *)identifier { 31 | NSLog(@"标识为 %@ 的 item 被点击了", identifier); 32 | 33 | // 向小程序发送消息 34 | if ([identifier isEqualToString:@"SendUniMPEvent"]) { 35 | [DCUniMPSDKEngine sendUniMPEvent:@"NativeEvent" data:@{@"msg":@"native message"}]; 36 | } 37 | } 38 | ``` 39 | 40 | #### Android 添加方法 41 | 42 | DCSDKInitConfig设置[setMenuActionSheetItems](/UniMPDocs/API/android?id=类menuactionsheetitem)实现全局菜单按钮设置. 43 | 44 | ```JAVA 45 | MenuActionSheetItem item = new MenuActionSheetItem("关于", "gy"); 46 | List sheetItems = new ArrayList<>(); 47 | sheetItems.add(item); 48 | DCSDKInitConfig config = new DCSDKInitConfig.Builder() 49 | // 添加到全局配置 50 | .setMenuActionSheetItems(sheetItems) 51 | .build(); 52 | ``` 53 | 54 | 设置全局菜单按钮点击事件监听 55 | 56 | ```JAVA 57 | DCUniMPSDK.getInstance().setDefMenuButtonClickCallBack(new DCUniMPSDK.IMenuButtonClickCallBack() { 58 | @Override 59 | public void onClick(String appid, String id) { 60 | switch (id) { 61 | case "gy":{ 62 | Log.e("unimp", "点击了关于" + appid); 63 | break; 64 | } 65 | } 66 | } 67 | }); 68 | ``` 69 | 70 | ### 小程序中添加菜单按钮 71 | 72 | 在小程序中可以单独为某个页面添加菜单按钮,打开`pages.json`,在页面的 `style->app-plus->titleNView->buttons`节点下添加配置,`pages.json` 的更多配置说明请参考此 [文档](https://uniapp.dcloud.io/collocation/pages?id=app-plus) 73 | 74 | ``` 75 | { 76 | "pages": [ 77 | { 78 | "path": "pages/tabBar/component/component", 79 | "style": { 80 | "navigationBarTitleText": "内置组件", 81 | "app-plus": { 82 | "bounce": "vertical", 83 | "titleNView": { 84 | "buttons": [{ 85 | "text": "\ue534", 86 | "title":"关于", //注意:title 为 uni小程序中显示的按钮标题,如果没有设置则显示 text 字段 87 | "fontSrc": "/static/uni.ttf", 88 | "fontSize": "22px", 89 | "color": "#FFFFFF" 90 | }] 91 | } 92 | } 93 | } 94 | }, 95 | ... 96 | ], 97 | ... 98 | } 99 | ``` 100 | 101 | 按钮点击后会在小程序中触发`onNavigationBarButtonTap(e)`方法 102 | 103 | ```javascript 104 | // 监听按钮点击事件 105 | onNavigationBarButtonTap(e) { 106 | console.log(e) 107 | } 108 | ``` 109 | 110 | ## 隐藏胶囊按钮 111 | uni小程序默认会显示胶囊按钮,您可以将其隐藏(目前只支持全局隐藏,不支持单个页面隐藏) 112 | 113 | ### iOS 隐藏胶囊按钮 114 | 115 | ```objective-c 116 | [DCUniMPSDKEngine setMenuButtonHidden:YES]; 117 | ``` 118 | 119 | ### Android 隐藏胶囊按钮 120 | 121 | DCSDKInitConfig设置[setCapsule](/UniMPDocs/API/android?id=setcapsule)实现隐藏 122 | 123 | ```JAVA 124 | DCSDKInitConfig config = new DCSDKInitConfig.Builder() 125 | .setCapsule(false).build(); 126 | ``` 127 | 128 | 需要注意,如果您隐藏了胶囊按钮,原生中添加的菜单按钮就会无效,小程序中添加的菜单按钮会显示到页面导航栏上并且显示的是`text`字段配置信息(和在HX内置基座运行效果一样)如下图所示 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /docs/UniMPDocs/Sample/start.md: -------------------------------------------------------------------------------- 1 | 宿主应用启动小程序时可实现如下功能 2 | 3 | - 支持传入参数到小程序环境, 4 | - 支持启动后直接打开指定页面 5 | 6 | 下面讲解一下具体实现 7 | 8 | ## API 说明 9 | 10 | ### iOS 平台 11 | 12 | ``` 13 | Class DCUniMPSDKEngine 14 | /// 启动小程序 15 | + (void)openApp:(NSString *)appid 16 | arguments:(NSDictionary * _Nullable)arguments 17 | redirectPath:(NSString * _Nullable)redirectPath; 18 | ``` 19 | 20 | |参数|类型|说明| 21 | |:--|:--|:--| 22 | |appid|NSString|小程序的 appid| 23 | |arguments|NSDictionary|启动小程序传入的参数| 24 | |redirectPath|NSString|指定启动应用后直接打开的页面路径| 25 | 26 | ### Android 平台 27 | 28 | ```JAVA 29 | // 启动小程序 30 | DCUniMPSDK.getInstance().startApp(context, appid, splashClass, redirectPath, arguments) 31 | ``` 32 | 33 | |参数|类型|必填|说明| 34 | |:----|:----|:----|:-----| 35 | |context|Context|是|上下文| 36 | |appid|String|是|小程序的 appid| 37 | |splashClass|IDCUniMPAppSplashView|否|自定义splashView接口类| 38 | |redirectPath|String|否|指定启动应用后直接打开的页面路径| 39 | |arguments|JSONObject|否|启动小程序传入的参数| 40 | 41 | **Tips** 42 | 43 | Android startApp详细说明可参考[uni小程序SDK API参考手册](https://ask.dcloud.net.cn/article/36984) 44 | 45 | ## 启动小程序并传参 46 | 宿主启动小程序时支持传入参数到小程序环境,小程序中可以通过 `plus.runtime.arguments` 获取宿主传入的参数 47 | 48 | **iOS 示例** 49 | 50 | ```Objective-C 51 | // 启动小程序并传入参数 52 | NSDictionary *arguments = @{@"value":@"Hello uni microprogram"}; 53 | [DCUniMPSDKEngine openApp:appid arguments:arguments]; 54 | ``` 55 | 56 | **Android 示例** 57 | 58 | ```JAVA 59 | // 启动小程序并传入参数 "Hello uni microprogram" 60 | try { 61 | JSONObject arguments = new JSONObject(); 62 | arguments.put("MSG","Hello uni microprogram"); 63 | DCUniMPSDK.getInstance().startApp(context, "__UNI__04E3A11", arguments); 64 | } catch (Exception e) { 65 | e.printStackTrace(); 66 | } 67 | ``` 68 | 69 | **小程序中获取参数** 70 | 71 | ```JavaScript 72 | var arguments = plus.runtime.arguments; 73 | ``` 74 | 75 | ## 启动打开指定页面 76 | 77 | 宿主启动小程序时可通过传入页面路径来打开指定页面 78 | 79 | **页面路径格式要求** 80 | 81 | 路径从 pages/ 开始填写绝对路径并支持参数 示例: 82 | 83 | ``` 84 | pages/component/view/view?action=redirect 85 | ``` 86 | 87 | **iOS 示例** 88 | 89 | ```Objcetive-C 90 | // 启动直达页面 91 | NSString *pagePath = @"pages/component/view/view?action=redirect"; 92 | [DCUniMPSDKEngine openApp:k_AppId arguments:nil redirectPath:pagePaht]; 93 | ``` 94 | 95 | **Android 示例** 96 | 97 | ```JAVA 98 | // 启动直达页面 99 | DCUniMPSDK.getInstance().startApp(context,"__UNI__04E3A11", "pages/component/view/view?action=redirect"); 100 | ``` 101 | 102 | **屏蔽返回** 103 | 104 | 直达二级页面如果您想屏蔽返回按钮及返回手势,可以在小程序页面的 `onLoad()` 方法中获取当前页面调用 `setStyle()` 方法实现,代码如下 105 | 106 | **Tips** 107 | 108 | `onLoad(e){}` 方法的参数`e`即为直达页面时传入的参数比如`pages/component/view/view?action=redirect`,框架会自动将参数转换成 jsonObject 类型 {"action":"redirect"} 109 | 110 | ``` 111 | // 启动直达二级页面屏蔽返回手势及返回按钮 112 | 130 | ``` -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/android/android.md: -------------------------------------------------------------------------------- 1 | SDK 提供了丰富的原生能力,您可根据需求自行添加功能模块,各功能模块所需的依赖库及资源文件 2 | 3 | 当前文档目录下 列出了常见的模块配置步骤。 更多模块配置,请参看 [其他模块](https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/others) 4 | 5 | ### 集成方式 6 | 7 | 具体的模块配置章节,查看当前模块所属文档。比如 [地图模块](https://nativesupport.dcloud.net.cn/UniMPDocs/UseModule/android/map.html#%E9%AB%98%E5%BE%B7%E5%9C%B0%E5%9B%BE) 8 | 9 | ### 功能模块与 API 对应关系 10 | 11 | | 功能模块 | 5+APP项目 | uni-app项目 12 | | :------- | :------- | :------- 13 | | Audio(音频) | [plus.audio](https://www.html5plus.org/doc/zh_cn/audio.html) | https://uniapp.dcloud.io/api/media/record-manager https://uniapp.dcloud.io/api/media/audio-context 14 | | Audio(MP3格式音频支持库) | [plus.audio](https://www.html5plus.org/doc/zh_cn/audio.html) | 15 | | Barcode(二维码) | [plus.barcode](https://www.html5plus.org/doc/zh_cn/barcode.html) | https://uniapp.dcloud.io/api/system/barcode 16 | | Bluetooth(低功耗蓝牙) | [plus.bluetooth](https://www.html5plus.org/doc/zh_cn/bluetooth.html) | https://uniapp.dcloud.io/api/system/bluetooth 17 | | Camera(摄像头) | [plus.camera](https://www.html5plus.org/doc/zh_cn/camera.html) | 18 | | Contacts(通讯录) | [plus.contacts](https://www.html5plus.org/doc/zh_cn/contacts.html) | 19 | | Device(设备信息) | [plus.device](https://www.html5plus.org/doc/zh_cn/device.html) | https://uniapp.dcloud.io/api/system/info 20 | | Downloader(文件下载) | [plus.downloader](https://www.html5plus.org/doc/zh_cn/downloader.html) | https://uniapp.dcloud.io/api/request/network-file?id=downloadfile 21 | | Fingerprint(指纹识别) | [plus.fingerprint](https://www.html5plus.org/doc/zh_cn/fingerprint.html) | https://uniapp.dcloud.io/api/other/authentication 22 | | Geolocation(基础定位库) | [plus.geolocation](https://www.html5plus.org/doc/zh_cn/geolocation.html) | https://uniapp.dcloud.io/api/location/location 23 | | Geolocation(高德定位) | [plus.geolocation](https://www.html5plus.org/doc/zh_cn/geolocation.html) | https://uniapp.dcloud.io/api/location/location 24 | | Geolocation(系统定位) | [plus.geolocation](https://www.html5plus.org/doc/zh_cn/geolocation.html) | https://uniapp.dcloud.io/api/location/location 25 | | iBeacon | [plus.ibeacon](https://www.html5plus.org/doc/zh_cn/ibeacon.html) | https://uniapp.dcloud.io/api/system/ibeacon 26 | | IO(文件系统) | [plus.io](https://www.html5plus.org/doc/zh_cn/io.html) | https://uniapp.dcloud.io/api/file/file 27 | | LivePusher(直播推流) | [plus.video.LivePusher](https://www.html5plus.org/doc/zh_cn/video.html#plus.video.LivePusher) | https://uniapp.dcloud.io/api/media/live-player-context 28 | | Maps(高德地图) | [plus.map](https://www.html5plus.org/doc/zh_cn/maps.html) | https://uniapp.dcloud.io/api/location/map 29 | | Messaging(短彩邮件消息) | [plus.messaging](https://www.html5plus.org/doc/zh_cn/messaging.html) | 30 | | Navigator(运行环境信息) | [plus.navigator](https://www.html5plus.org/doc/zh_cn/navigator.html) | https://uniapp.dcloud.io/api/system/info 31 | | Oauth(登录基础库) | [plus.oauth](https://www.html5plus.org/doc/zh_cn/oauth.html) | https://uniapp.dcloud.io/api/plugins/login 32 | | Oauth(小米登录) | [plus.oauth](https://www.html5plus.org/doc/zh_cn/oauth.html) | https://uniapp.dcloud.io/api/plugins/login 33 | | Oauth(QQ登录) | [plus.oauth](https://www.html5plus.org/doc/zh_cn/oauth.html) | https://uniapp.dcloud.io/api/plugins/login 34 | | Oauth(新浪微博登录) | [plus.oauth](https://www.html5plus.org/doc/zh_cn/oauth.html) | https://uniapp.dcloud.io/api/plugins/login 35 | | Oauth(微信登录) | [plus.oauth](https://www.html5plus.org/doc/zh_cn/oauth.html) | https://uniapp.dcloud.io/api/plugins/login 36 | | Payment(支付基础库) | [plus.payment](https://www.html5plus.org/doc/zh_cn/payment.html) | https://uniapp.dcloud.io/api/plugins/payment 37 | | Payment(支付宝支付) | [plus.payment](https://www.html5plus.org/doc/zh_cn/payment.html) | https://uniapp.dcloud.io/api/plugins/payment 38 | | Payment(微信支付) | [plus.payment](https://www.html5plus.org/doc/zh_cn/payment.html) | https://uniapp.dcloud.io/api/plugins/payment 39 | | Share(分享基础库) | [plus.share](https://www.html5plus.org/doc/zh_cn/share.html) | https://uniapp.dcloud.io/api/plugins/share 40 | | Share(QQ分享) | [plus.share](https://www.html5plus.org/doc/zh_cn/share.html) | https://uniapp.dcloud.io/api/plugins/share 41 | | Share(新浪微博分享) | [plus.share](https://www.html5plus.org/doc/zh_cn/share.html) | https://uniapp.dcloud.io/api/plugins/share 42 | | Share(微信分享) | [plus.share](https://www.html5plus.org/doc/zh_cn/share.html) | https://uniapp.dcloud.io/api/plugins/share 43 | | Speech(语音识别基础库) | [plus.speech](https://www.html5plus.org/doc/zh_cn/speech.html) | https://uniapp.dcloud.io/api/plugins/voice 44 | | Speech(百度语音识别) | [plus.speech](https://www.html5plus.org/doc/zh_cn/speech.html) | https://uniapp.dcloud.io/api/plugins/voice 45 | | SQLite(数据库) | [plus.sqlite](https://www.html5plus.org/doc/zh_cn/sqlite.html) | 46 | | Statistic(友盟统计) | [plus.statistic](https://www.html5plus.org/doc/zh_cn/statistic.html) | 47 | | Uploader(文件上传) | [plus.uploader](https://www.html5plus.org/doc/zh_cn/uploader.html) | https://uniapp.dcloud.io/api/request/network-file?id=uploadfile 48 | | VideoPlayer(视频播放) | [plus.video.VideoPlayer](https://www.html5plus.org/doc/zh_cn/video.html#plus.video.VideoPlayer) | https://uniapp.dcloud.io/api/media/video 49 | | XHR(网络请求) | [plus.net](https://www.html5plus.org/doc/zh_cn/xhr.html) | https://uniapp.dcloud.io/api/request/request?id=request 50 | | nvue原生组件: map(高德地图) | 不支持 | https://uniapp.dcloud.io/component/map 51 | | nvue原生组件: barcode(二维码) | 不支持 | https://uniapp.dcloud.io/component/barcode 52 | | nvue原生组件: live-pusher(直播推流) | 不支持 | https://uniapp.dcloud.io/component/live-pusher 53 | | nvue原生组件: video视频 | 不支持 | https://uniapp.dcloud.io/component/video 54 | | nvue原生组件: canvas | 不支持 | https://github.com/dcloudio/NvueCanvasDemo 55 | -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/android/geolocation.md: -------------------------------------------------------------------------------- 1 | ## 百度定位 2 | 3 | ### 需要拷贝添加的文件 4 | | 路径 | 文件 | 5 | | :-------: | :-------: | 6 | | uniMPSDK\Features\libs | baidu-libs-release.aar, geolocation-baidu-release.aar | 7 | 8 | ### 通过gradle集成百度定位SDK 9 | 10 | 在主工程的build.gradle文件配置dependencies 11 | 12 | ``` 13 | android { 14 | xxxxxxxx 15 | defaultConfig { 16 | xxxxxxxx 17 | } 18 | } 19 | dependencies { 20 | xxxxxxxx 21 | implementation files('libs/baidu-libs-release.aar') 22 | implementation files('libs/geolocation-baidu-release.aar') 23 | } 24 | ``` 25 | 26 | ### Androidmainfest.xml文件需要修改的项 27 | 28 | **需要在application节点前添加权限** 29 | 30 | ``` 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | ``` 45 | 46 | **application节点下配置如下代码** 47 | 48 | ``` 49 | 52 | 56 | ``` 57 | 58 | ## 高德定位 59 | 60 | ### 需要拷贝添加的文件 61 | 62 | | 路径 | 文件 | 63 | | :-------: | :-------: | 64 | | uniMPSDK\Features\libs | amap-libs-release.aar, geolocation-amap-release.aar | 65 | 66 | **注意事项:** 67 | + 3.7.6开始不再提供"amap-libs-release.aar"文件 改为gradle集成!geolocation-amap-release.aar还需要继续添加到项目中 68 | 69 | 将表格中的文件拷贝至主Module中的libs下。 70 | 71 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 72 | 73 | ### 通过gradle集成高德定位SDK 74 | 75 | 在主工程的build.gradle文件配置dependencies 76 | 77 | ``` 78 | android { 79 | xxxxxxxx 80 | defaultConfig { 81 | xxxxxxxx 82 | } 83 | } 84 | dependencies { 85 | xxxxxxxx 86 | implementation('com.amap.api:location:xxx') 87 | } 88 | ``` 89 | 90 | **注意事项:** 91 | + xxx是版本号 版本号通过离线SDK中的demo获取相对应版本 92 | + 本地集成的高德定位SDK需要删除相关aar文件 否则会导致sdk冲突(geolocation-amap-release.aar需要继续集成) 93 | + 高德定位与高德地图SDK集成冲突 需要注意 如果集成地图无须再配置定位 94 | 95 | ### Androidmainfest.xml文件需要修改的项 96 | 97 | **需要在application节点前添加权限** 98 | 99 | ``` 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | ``` 114 | 115 | **application节点下配置如下代码** 116 | 117 | ``` 118 | 119 | 120 | ``` 121 | -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/android/livepusher.md: -------------------------------------------------------------------------------- 1 | ### 需要拷贝添加的文件 2 | 3 | | 路径 | 文件 | 4 | | :-------: | :-------: | 5 | | uniMPSDK\Features\libs | media-livepusher-release.aar,weex_livepusher-release.aar| 6 | 7 | 将表格中的文件拷贝至主Module中的libs下。 8 | 9 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 10 | 11 | ### Androidmainfest.xml文件需要修改的项 12 | 13 | **需要在application节点前添加权限** 14 | 15 | ``` 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ``` 24 | 25 | ### 修改dcloud_properties.xml配置 26 | 27 | dcloud_properties.xml文件在assets/data目录下 28 | 29 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_2.png) 30 | 31 | 在dcloud_properties.xml添加以下信息 32 | 33 | #### features节点下设置 34 | 35 | ``` 36 | 37 | ``` -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/android/oauth.md: -------------------------------------------------------------------------------- 1 | ## 微信登陆 2 | 3 | ### 需要拷贝添加的文件 4 | 5 | | 路径 | 文件 | 6 | | :-------: | :-------: | 7 | | uniMPSDK\Features\libs | oauth-weixin-release.aar,wechat-sdk-android-without-mta-6.7.9.aar | 8 | 9 | 将表格中的文件拷贝至主Module中的libs下。 10 | 11 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 12 | 13 | **注意:3.7.6及以上版本,微信SDK改为gradle依赖,需要将libs目录下的wechat-sdk-android-without-mta-6.7.9.aar移除** 14 | 15 | ### 通过gradle集成微信SDK 16 | 17 | 在主工程的build.gradle文件配置dependencies 18 | ``` 19 | dependencies { 20 | implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9' 21 | } 22 | ``` 23 | 24 | ### WXPayEntryActivity 25 | 26 | 需要自主创建`WXPayEntryActivity.java`代码文件并引入到工程 27 | 28 | **`WXPayEntryActivity`的实现只需继承AbsWXCallbackActivity即可 package路径规范:`应用包名.wxapi`** 29 | 30 | **示例:** 31 | 32 | ``` 33 | package 应用包名.wxapi; 34 | 35 | import io.dcloud.feature.oauth.weixin.AbsWXCallbackActivity; 36 | 37 | public class WXEntryActivity extends AbsWXCallbackActivity{ 38 | 39 | } 40 | ``` 41 | 42 | ### Androidmainfest.xml文件需要修改的项 43 | 44 | **需要在application节点前添加权限** 45 | 46 | ``` 47 | 48 | 节点下配置如下代码 49 | 50 | 51 | 55 | 56 | 57 | 58 | 59 | 60 | ``` 61 | 62 | ### 修改dcloud_properties.xml配置 63 | 64 | dcloud_properties.xml文件在assets/data目录下 65 | 66 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_2.png) 67 | 68 | 在dcloud_properties.xml添加以下信息 69 | 70 | #### features节点下设置 71 | 72 | ``` 73 | 74 | ``` 75 | ## QQ登陆 76 | 77 | ### 需要拷贝添加的文件 78 | 79 | | 路径 | 文件 | 80 | | :-------: | :-------: | 81 | | uniMPSDK\Features\libs | oauth-qq-release.aar,qq_mta-sdk-1.6.2.jar,qq_open_sdk_3.5.2.152.jar| 82 | 83 | 将表格中的文件拷贝至主Module中的libs下。 84 | 85 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 86 | 87 | ### Androidmainfest.xml文件需要修改的项 88 | 89 | **需要在application节点前添加权限** 90 | 91 | ``` 92 | 93 | ``` 94 | 95 | **\节点下配置如下代码** 96 | 97 | ``` 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | ``` 111 | 112 | ### 修改dcloud_properties.xml配置 113 | 114 | dcloud_properties.xml文件在assets/data目录下 115 | 116 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_2.png) 117 | 118 | 在dcloud_properties.xml添加以下信息 119 | 120 | #### features节点下设置 121 | 122 | ``` 123 | 124 | ``` 125 | ## 新浪微博登陆 126 | 127 | ### 需要拷贝添加的文件 128 | 129 | | 路径 | 文件 | 130 | | :-------: | :-------: | 131 | | uniMPSDK\Features\libs | sina-libs-release.aar,oauth-sina-release.aar| 132 | 133 | 将表格中的文件拷贝至主Module中的libs下。 134 | 135 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 136 | 137 | ### Androidmainfest.xml文件需要修改的项 138 | 139 | **\节点下配置如下代码** 140 | 141 | ``` 142 | 143 | 144 | 145 | 149 | 150 | 151 | ``` 152 | 153 | ### 修改dcloud_properties.xml配置 154 | 155 | dcloud_properties.xml文件在assets/data目录下 156 | 157 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_2.png) 158 | 159 | 在dcloud_properties.xml添加以下信息 160 | 161 | #### features节点下设置 162 | 163 | ``` 164 | 165 | ``` 166 | -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/android/payment.md: -------------------------------------------------------------------------------- 1 | ## 支付宝配置 2 | 3 | ### 需要拷贝添加的文件 4 | 5 | | 路径 | 文件 | 6 | | :-------: | :-------: | 7 | | uniMPSDK\Features\libs | payment-alipay-release.aar, alipaysdk-android-15.8.11.aar| 8 | 9 | 将表格中的文件拷贝至主Module中的libs下。 10 | 11 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 12 | 13 | **注意:3.7.6及以上版本,支付宝SDK改为gradle依赖,需要将libs目录下的alipaysdk-android-15.8.11.aar移除** 14 | 15 | ### 通过gradle集成支付宝SDK 16 | 17 | 在主工程的build.gradle文件配置dependencies 18 | ``` 19 | dependencies { 20 | implementation 'com.alipay.sdk:alipaysdk-android:15.8.11' 21 | } 22 | ``` 23 | 24 | ### Androidmainfest.xml文件需要修改的项 25 | 26 | **需要在application节点前添加权限** 27 | 28 | ``` 29 | 30 | 31 | 32 | 33 | 34 | 35 | ``` 36 | 37 | ### 修改dcloud_properties.xml配置 38 | 39 | dcloud_properties.xml文件在assets/data目录下 40 | 41 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_2.png) 42 | 43 | 在dcloud_properties.xml添加以下信息 44 | 45 | #### features节点下设置 46 | 47 | ``` 48 | 49 | ``` 50 | 51 | ## 微信支付配置 52 | 53 | [微信appkey申请方法](http://ask.dcloud.net.cn/article/208) 54 | 55 | ### 需要拷贝添加的文件 56 | 57 | | 路径 | 文件 | 58 | | :-------: | :-------: | 59 | | uniMPSDK\Features\libs | payment-weixin-release.aar, wechat-sdk-android-without-mta-6.6.5.aar | 60 | 61 | 将表格中的文件拷贝至主Module中的libs下。 62 | 63 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 64 | 65 | **注意:3.7.6及以上版本,微信SDK改为gradle依赖,需要将libs目录下的wechat-sdk-android-without-mta-6.7.9.aar移除** 66 | 67 | ### 通过gradle集成微信SDK 68 | 69 | 在主工程的build.gradle文件配置dependencies 70 | ``` 71 | dependencies { 72 | implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9' 73 | } 74 | ``` 75 | 76 | 需要将以下代码文件引入到工程,包名为”$你的包名.wxapi” 77 | 78 | | 路径 | 文件 | 79 | | :-------: | :-------: | 80 | | $你的包名\wxapi | WXPayEntryActivity.java | 81 | 82 | ### WXPayEntryActivity 83 | 84 | 继承AbsWXPayCallbackActivity即可。 85 | 86 | ``` 87 | package 应用包名.wxapi; 88 | 89 | import io.dcloud.feature.payment.weixin.AbsWXPayCallbackActivity; 90 | 91 | public class WXPayEntryActivity extends AbsWXPayCallbackActivity{ 92 | 93 | } 94 | ``` 95 | 96 | ### Androidmainfest.xml文件需要修改的项 97 | 98 | **需要在application节点前添加权限** 99 | 100 | ``` 101 | 102 | ``` 103 | 104 | **application节点下配置如下代码** 105 | 106 | ``` 107 | 108 | 109 | 114 | 115 | 120 | 121 | ``` 122 | 123 | ### 修改dcloud_properties.xml配置 124 | 125 | dcloud_properties.xml文件在assets/data目录下 126 | 127 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_2.png) 128 | 129 | 在dcloud_properties.xml添加以下信息 130 | 131 | #### features节点下设置 132 | 133 | ``` 134 | 135 | ``` -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/android/speech.md: -------------------------------------------------------------------------------- 1 | ## 百度语音设置 2 | 3 | ### 需要拷贝添加的文件 4 | 5 | | 路径 | 文件名 | 6 | | :-------: | :-------: | 7 | |uniMPSDK\Features\libs|speech-release.aar、speech_baidu-release.aar| 8 | 9 | 将表格中的文件拷贝至主Module中的libs下。 10 | 11 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 12 | 13 | ### AndroidManifest.xml配置 14 | 15 | #### 权限配置 16 | 17 | ``` 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | ``` 26 | 27 | #### application节点配置 28 | 29 | ``` 30 | 31 | 32 | 33 | 34 | ``` 35 | 36 | ### 修改dcloud_properties.xml配置 37 | 38 | dcloud_properties.xml文件在assets/data目录下 39 | 40 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_2.png) 41 | 42 | 在dcloud_properties.xml添加以下信息 43 | 44 | #### features节点下设置 45 | 46 | ``` 47 | 48 | 49 | 50 | ``` -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/android/umstatistic.md: -------------------------------------------------------------------------------- 1 | ### 需要拷贝添加的文件 2 | 3 | | 路径 | 文件名 | 4 | | :-------: | :-------: | 5 | |uniMPSDK\Features\libs|umeng-abtest-v1.0.0.aar, alipayutdid.jar、statistics-umeng-release.aar| 6 | 7 | 将表格中的文件拷贝至主Module中的libs下。 8 | 9 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 10 | 11 | ### AndroidManifest.xml配置 12 | 13 | #### 权限配置 14 | 15 | ``` 16 | 17 | 18 | 19 | ``` 20 | 21 | #### application节点配置 22 | 23 | ``` 24 | 25 | 26 | ``` 27 | 28 | ### 修改dcloud_properties.xml配置 29 | 30 | dcloud_properties.xml文件在assets/data目录下 31 | 32 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_2.png) 33 | 34 | 在dcloud_properties.xml添加以下信息 35 | 36 | #### features节点下设置 37 | 38 | ``` 39 | 40 | ``` 41 | 42 | #### services节点下设置 43 | 44 | ``` 45 | 46 | ``` -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/android/x5.md: -------------------------------------------------------------------------------- 1 | ## 腾讯X5内核 2 | 3 | [集成X5需知](https://ask.dcloud.net.cn/article/36806#mattersNeedingAttention) 4 | 5 | ### 需要拷贝添加的文件 6 | 7 | | 路径 | 文件名 | 8 | | :-------: | :-------: | 9 | |uniMPSDK\Features\libs|webview-x5-release.aar、weex_webview-x5-release.aar| 10 | 11 | 将表格中的文件拷贝至主Module中的libs下。 12 | 13 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/nativeplugin/android_plugin_img_3_1.png) 14 | 15 | **Tips** 16 | 17 | NDK 配置时请去除x86、64位cpu的配置 建议仅配置"armeabi-v7a" 否则可能无法正常使用X5内核 -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/dependentLibrary.md: -------------------------------------------------------------------------------- 1 | ### iOS 端依赖的第三方库版本说明 2 | 3 | |SDK名称|版本|备注(使用模块)| 4 | |:--|:--|:--| 5 | |百度定位|v2.0.9|Geolocation/百度定位模块 | 6 | |高德定位|v2.10.0|Geolocation/高德定位 | 7 | |百度地图|v6.6.0|Maps/百度地图 | 8 | |高德地图|v9.7.0|Maps/高德地图 | 9 | |微信SDK|v2.0.2|Oauth、Share、Payment/微信| 10 | |AlipaySDK|v15.8.6|Payment/支付宝| 11 | |QQSDK|v3.5.14_lite|Oauth、Share/QQ| 12 | |新浪微博SDK|v3.3.4|Oauth、Share/新浪微博| 13 | |又拍云|v4.1.7|LivePusher(直播推流)| 14 | |友盟UMCommon|v7.4.2|Statistic(友盟统计)| 15 | |友盟UMAPM|v1.8.4|Statistic(友盟统计)| 16 | |IJKPlayer|https://gitee.com/dcloud/IJKMediaFramework 源码编译|VideoPlayer(视频播放)| 17 | |SDWebImage|v5.10.0|基础库/对应的库 libSDWebImage.a | 18 | |Masonry|1.1.0|VideoPlayer/对应的库 Masonry.framework| 19 | |SSZipArchive|2.2.3|基础库/对应的库 libcoreSupport.a| 20 | | ZXing ||Barcode/对应的库 libDCUniZXing.a 源码已修改| 21 | |Google登录|v7.0.0|Oauth/Google| 22 | |Facebook登录|v16.2.1|Oauth/Facebook| 23 | |快手|v3.3.17|UniAD/快手| 24 | |快手广告联盟|v3.3.23.1|UniAD/快手广告联盟| 25 | |广点通|v4.13.11|UniAD/广点通| 26 | |穿山甲|v4.1.0.0|UniAD/穿山甲| 27 | |Sigmob|v3.4.2|UniAD/Sigmob| -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/geolocation.md: -------------------------------------------------------------------------------- 1 | ## 说明 2 | geolocation 模块不添加百度或者高德的依赖库也可以正常使用,默认调用 iOS 系统API,如果想提供定位精确度可以选择集成百度定位或高德定位依赖库; 3 | 4 | ## 百度定位 5 | ### 将百度定位模块依赖库及资源添加到工程 6 | 7 | |依赖库|系统库|依赖资源| 8 | |:--|:--|:--| 9 | |libBaiduLocationPlugin.a、libBaiduKeyVerify.a、liblibGeolocation.a、BaiduMapAPI_Utils.framework、BaiduMapAPI_Base.framework、BaiduMapAPI_Search.framework、BMKLocationKit.framework、libssl.a、 10 | libcrypto.a|libc++.tbd、libsqlite3.0.tbd、SystemConfiguration.framework、Security.framework、CoreLocation.framework|无| 11 | 12 | ### 帐号配置 13 | 1.申请Appkey,如果没有appkey将会导致地图显示不出 14 | 参考[百度地图Appkey申请章节](http://ask.dcloud.net.cn/article/29) 15 | 16 | 2.打开Info.plist文件找到baidu项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey 17 | 注意info.plist中Bundle identifier要和你输入的安全码一致 18 | 19 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/1153.png) 20 | 21 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/2460.png) 22 | 23 | ### 隐私权限配置 24 | 打开Info.plist文件,然后正确添加下方图片中要求的配置 25 | 26 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/geolocation/geolocation.png) 27 | 28 | ## 高德定位 29 | ### 将高德定位模块依赖库及资源添加到工程 30 | 31 | |依赖库|系统库|依赖资源| 32 | |:--|:--|:--| 33 | |libAMapLocationPlugin.a、liblibGeolocation.a、AMapFoundationKit.framework、AMapLocationKit.framework|libc++.tbd、libz.tbd、ExternalAccessory.framework、GLKit.framework、security.framework、CoreTelephony.framework、SystemConfiguration.framework|无| 34 | 35 | ### 帐号配置 36 | 1.申请Appkey,如果没有appkey将会导致地图显示不出 37 | 参考[高德地图Appkey申请章节](http://lbs.amap.com/api/ios-sdk/guide/create-project/get-key) 38 | 39 | 2.打开Info.plist文件找到amap项,如果没有按图片中的格式添加该项,在下图中输入申请的appkey 40 | 41 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/28806.png) 42 | 43 | ### 隐私权限配置 44 | 打开Info.plist文件,然后正确添加下方图片中要求的配置 45 | 46 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/geolocation/geolocation.png) 47 | 48 | ## 系统定位 49 | ### 将系统定位模块依赖库及资源添加到工程 50 | 51 | |依赖库|系统库|依赖资源| 52 | |:--|:--|:--| 53 | |liblibGeolocation.a|Foundation.framework、CoreLocation.framework|无| 54 | 55 | ### 隐私权限配置 56 | 打开Info.plist文件,然后正确添加下方图片中要求的配置 57 | 58 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/geolocation/geolocation.png) -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/livepusher.md: -------------------------------------------------------------------------------- 1 | ## 添加依赖资源 2 | 3 | 直播推流功能是基于 又拍云SDK 实现 4 | 5 | 将依赖库及资源添加到工程中 6 | 7 | |依赖库|系统库|依赖资源| 8 | |:--|:--|:--| 9 | |liblibLivePush.a、libDCUniGPUImage.a、libDCUniLivePush.a、UPLiveSDKDll.framework|AVFoundation.framework、QuartzCore.framework、OpenGLES.framework、AudioToolbox.framework、VideoToolbox.framework、Accelerate.framework、CoreMedia.framework、CoreTelephony.framework、SystemConfiguration.framework、CoreMotion.framework|无| 10 | 11 | **注意:"UPLiveSDKDll.framework"这个库是动态库并且不支持模拟器,需要在 `Link Binary With Libraries `和 `Embed Frameworks`中同时添加,如下图所示:** 12 | 13 | ![](https://ask.dcloud.net.cn/uploads/article/20181217/048ea429c171d09a4b46fdbd67f9ae84.png) -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/map.md: -------------------------------------------------------------------------------- 1 | ## 高德地图(仅nvue页面支持) 2 | 3 | ### 添加依赖资源及文件 4 | 5 | |依赖库|系统库|依赖资源| 6 | |:--|:--|:--| 7 | |libDCUniMap.a、libDCUniAmap.a、Masonry.framework、AMapSearchKit.framework、MAMapKit.framework、AMapFoundationKit.framework|MapKit.framework、CoreLocation.framework、libc++.tbd、GLKit.framework|AMap.bundle、userPosition@2x.png| 8 | 9 | 注:userPosition@2x.png 为显示带方向的用户位置的图标,可替换为自己的设计 10 | 11 | ### 账号配置 12 | 1.在[高德地图官网](http://lbs.amap.com/api/ios-sdk/guide/create-project/get-key)申请Appkey 13 | 14 | 2.在工程的 info.plist 添加 `amap`节点,添加 appkey 信息,如下图 15 | 16 | ![](https://ask.dcloud.net.cn/uploads/article/20181218/4e630bfdb3d418b8847d82d7d4ada95d.png) 17 | 18 | 3.在工程的 info.plist 添加 `NSLocationAlwaysAndWhenInUseUsageDescription` 和 `NSLocationWhenInUseUsageDescription` key,并填写获取权限描述信息 19 | 20 | ![](https://img.cdn.aliyun.dcloud.net.cn/client/doc/ios/locationDes.png) 21 | 22 | ## 百度地图 (仅vue页面支持) 23 | 24 | ### 添加依赖资源及文件 25 | 26 | |依赖库|系统库|依赖资源| 27 | |:--|:--|:--| 28 | |BaiduMapAPI_Utils.framework 、 BaiduMapAPI_Base.framework、 BaiduMapAPI_Search.framework、 BaiduMapAPI_Map.framework、BMKLocationKit.framework、liblibMap.a、libbmapimp.a、libBaiduKeyVerify.a、libssl.a、 29 | libcrypto.a|libc++.tbd、libsqlite3.0.tbd、libz.tbd、QuartzCore.framework 、CoreGraphics.framework 、CoreTelephony.framework、Accelerate.framework、SystemConfiguration.framework 、Security.framework、MapKit.framework 、OpenGLES.framework、CoreLocation.framework|mapapi.bundle| 30 | 31 | ### 账号配置 32 | 1、申请Appkey,如果没有appkey将会导致地图显示不出 33 | 参考[百度地图Appkey申请章节](http://ask.dcloud.net.cn/article/29) 34 | 35 | 2、打开Info.plist文件找到baidu项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey 36 | 注意info.plist中Bundle identifier要和你输入的安全码一致 37 | 38 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/1153.png) 39 | 40 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/2460.png) 41 | 42 | 3.在工程的 info.plist 添加 `NSLocationAlwaysAndWhenInUseUsageDescription` 和 `NSLocationWhenInUseUsageDescription` key,并填写获取权限描述信息 43 | 44 | ![](https://img.cdn.aliyun.dcloud.net.cn/client/doc/ios/locationDes.png) 45 | 46 | ### 常见问题解决 47 | 1.如下图只能看见栅格图可能的原因appkey配置不对、Bundle identifier和安全码不一致、百度地图缓存导致的可以删除app重新安装 48 | 49 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/2461.png) 50 | 51 | 52 | 2.提示appKey校验错误 53 | 54 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/map/5178.png) 55 | 56 | 在XCode控制台搜索 `baidu maponGetPermissionState` 查看错误码是多少,对比百度开发平台错误信息 -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/payment.md: -------------------------------------------------------------------------------- 1 | ## 概述 2 | 3 | 目前支持支付宝、微信支付、苹果内购支付、paypal支付、stripe支付: 4 | 5 | 支付插件首先需要到各开放平台申请帐号,查看该[文档](http://ask.dcloud.net.cn/article/71) 6 | 7 | ## 配置支付平台参数 8 | 9 | 在工程中搜索 feature.plist 文件(位于PandoraApi.bundle中),在 Payment-> extend 节点下添加对应平台的配置
10 | **注意:如果用不到的不要配置,以免影响审核** 11 | 12 | ![](https://native-res.dcloud.net.cn/images/uniapp/nativedocs/iOS/payment_feature.png) 13 | 14 | ## 支付宝 15 | 16 | ### 添加依赖库及资源 17 | 18 | |依赖库|系统库|资源文件| 19 | |:--|:--|:--| 20 | |liblibPayment.a、libalixpayment.a、AlipaySDK.framework|Security.framework、CoreMotion.framework、SystemConfiguration.framework、CFNetwork.framework、libc++.tbd|AlipaySDK.bundle| 21 | 22 | ### 工程配置 23 | 1.在URL Types 中添加配置: identifier 填写 `alixpay` ,URL Schemes 填写 `alix[后面是您在支付宝平台申请的appid]` ,如果没有该项按照图中的格式创建 24 | 25 | ![](https://ask.dcloud.net.cn/uploads/article/20200415/e99c7479d3ff7ebbd6063e5687bcaeac.png) 26 | 27 | 28 | 2.在 info.plist 添加 Schemes 白名单配置 29 | 30 | ![](https://ask.dcloud.net.cn/uploads/article/20200415/2547027bea852aa761c90363aed36688.png) 31 | 32 | 33 | ## 微信支付 34 | 35 | ### 添加依赖库及资源 36 | | 依赖库 | 系统库 | 资源文件 | 37 | | :-- | :-- | :-- | 38 | |liblibPayment.a、libwxpay.a、libWeChatSDK_pay.a | libsqlite3.0.tbd、libz.tbd、CoreTelephony.framework、SystemConfiguration.framework| 无 | 39 | 40 | 注意:SDK 中的 41 | 42 | - libWeChatSDK_pay.a 为带支付功能的微信SDK,支持微信分享、微信支付及微信授权登录功能 43 | - libWeChatSDK.a 为不带支付功能的SDK,仅支持微信分享和授权登录,**不使用支付功能请添加此库,避免审核被拒** 44 | - 不要同时添加到工程避免冲突 45 | 46 | ### 工程配置 47 | 1.在URL Types 中添加配置: identifier 填写 `weixin` ,URL Schemes 填写`wx[后面是您在微信平台申请的appkey]` ,如果没有该项按照图中的格式创建 48 | 49 | ![](https://ask.dcloud.net.cn/uploads/article/20200415/c12811edad437d8ce204cbdc8ac72803.png) 50 | 51 | 2.在 info.plist 添加 Schemes 白名单配置 52 | 53 | ![](https://ask.dcloud.net.cn/uploads/article/20191203/7bc7afb901b0c2a7b8f057be5cc81a89.png) 54 | 55 | 56 | 3.配置Associated Domains(域名) 57 | 58 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/2d348820422e3b02d8a65b8f6c6cd830.png) 59 | 60 | 填写通用链接域名 61 | 62 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 63 | 64 | 4.在info.plist root 节点添加`UniversalLinks`字段,值和您在微信开放平台配置的一致,参考如下:(SDK 3.2.0版本以后 此项已废弃,仅保留字段,配置参数已经位置如步骤5所示) 65 | 66 | ![](https://ask.dcloud.net.cn/uploads/article/20191016/dfc79b582f04429a83bc2640ec26b2e2.png) 67 | 68 | 5.在 info.plist 添加 `weixin`(3.2.0 以前为`weixinoauth`) 项,填写微信 `appid` 及 `UniversalLinks`,值和您在微信开放平台配置的一致,参考如下: 69 | 70 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/weixin_plist.png) 71 | 72 | 6.在工程的 AppDelegate.m 系统通用链接回调方法中调用框架方法如下: 73 | 74 | ``` 75 | - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable))restorationHandler { 76 | // 通过通用链接唤起 App 77 | [DCUniMPSDKEngine application:application continueUserActivity:userActivity]; 78 | restorationHandler(nil); 79 | return YES; 80 | } 81 | ``` 82 | 83 | ## 苹果应用内购支付 84 | 85 | ### 添加依赖库及资源 86 | 87 | | 依赖库 | 系统库 | 资源文件 | 88 | | :-- | :-- | :-- | 89 | |liblibPayment.a、libIAPPay.a| StoreKit.framework| 无 | 90 | 91 | ## paypal支付 92 | 注:SDK3.3.7+、iOS13.0+ 93 | 94 | ### 添加依赖库及资源 95 | 96 | |依赖库|系统库|资源文件| 97 | |:--|:--|:--| 98 | |liblibPayment.a、libpaypalpay.a、PayPalCheckout.xcframework|无|无| 99 | 100 | ### 工程配置 101 | 1. 在 info.plist 添加 `paypal` 项,填写`returnUrl`,参考如下 102 | 103 | ![](https://native-res.dcloud.net.cn/images/uniapp/nativedocs/iOS/payment_paypal_returnurl.png) 104 | 105 | ## stripe支付 106 | 注:SDK3.3.7+、iOS13.0+ 107 | 108 | ### 添加依赖库及资源 109 | 110 | |依赖库|系统库|资源文件| 111 | |:--|:--|:--| 112 | |liblibPayment.a、libstripepay.a、StripeApplePay.xcframework、StripeCore.xcframework、StripeUICore.xcframework、Stripe3DS2.xcframework、StripePayments.xcframework、StripePaymentsUI.xcframework、StripePaymentSheet.xcframework|无|无| 113 | 114 | ### 工程配置 115 | 1. 在URL Types 中添加当前应用的自定义URL Schemes,参考如下 116 | ![](https://native-res.dcloud.net.cn/images/uniapp/nativedocs/iOS/payment_stripe_urlscheme.png) 117 | 118 | 2. 在 info.plist 添加 `stripe` 项,填写`returnUrl`,returnUrl为当前应用的自定义URL Schemes参考如下 119 | ![](https://native-res.dcloud.net.cn/images/uniapp/nativedocs/iOS/payment_stripe_returnurl.png) 120 | 121 | 122 | ## 添加系统回调方法 123 | 124 | 除苹果支付外,其他支付需在 AppDelegate.m 文件的系统回调方法中调用框架的方法如下 125 | 126 | ``` 127 | - (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary *)options { 128 | [DCUniMPSDKEngine application:app openURL:url options:options]; 129 | return YES; 130 | } 131 | 132 | ``` -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/push.md: -------------------------------------------------------------------------------- 1 | ## UniPush 2 | > DCloud 与 个推官方合作推出的推送功能(对应的Android端sdk支持离线消息)推荐使用 3 | 4 | ### 添加依赖库及资源添 5 | 6 | |依赖库|系统库|依赖资源| 7 | |:--|:--|:--| 8 | |liblibPush.a、libUniPush.a、liblibNotification.a、GTSDK.framework|CoreTelephony.framework、AVFoundation.framework、CoreLocation.framework、SystemConfiguration.framework、MobileCoreServices.framework、Security.framework、libresolv.tbd、libz.tbd、libsqlite3.tbd、libc++.tbd、UserNotifications.framework|无| 9 | 10 | ### 账号配置 11 | 12 | 1. 在 [UniPush官网](https://dev.dcloud.net.cn/uni/push) 申请App,获取appid 等信息 13 | 2. 在工程的 info.plist 中添加 "getui" 字段,并填写如下信息 14 | 15 | ![](https://ask.dcloud.net.cn/uploads/article/20181213/4688577602fe1429ecfa585eaca0c31b.png) 16 | 17 | ## 个推推送 18 | > 基于个推官方标准SDK实现 19 | 20 | ### 添加依赖库及资源添 21 | 22 | |依赖库|系统库|依赖资源| 23 | |:--|:--|:--| 24 | |liblibPush.a、libGeTuiPush.a、liblibNotification.a、GTSDK.framework|CoreTelephony.framework、AVFoundation.framework、CoreLocation.framework、SystemConfiguration.framework、MobileCoreServices.framework、Security.framework、libresolv.tbd、libz.tbd、libsqlite3.tbd、libc++.tbd、UserNotifications.framework|无| 25 | 26 | ### 账号配置 27 | 28 | 1. 在 [个推官网](https://dev.getui.com/) 申请App,获取appid 等信息 29 | 2. 在工程的 info.plist 中添加 "getui" 字段,并填写如下信息 30 | 31 | ![](https://ask.dcloud.net.cn/uploads/article/20181213/4688577602fe1429ecfa585eaca0c31b.png) -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/share.md: -------------------------------------------------------------------------------- 1 | ## 概述 2 | 3 | 目前分享模块支持新浪微博分享、QQ分享、微信分享 4 | 5 | 首先需要到各开放平台申请帐号,参考 [文档](http://ask.dcloud.net.cn/article/36) 6 | 7 | ## 新浪微博分享 8 | 9 | ### 添加依赖库及资源 10 | 11 | |依赖库|系统库|依赖资源| 12 | |:--|:--|:--| 13 | |liblibShare.a、libSinaShare.a、libWeiboSDK.a|ImageIO.framework、libsqlite3.0.tbd|WeiboSDK.bundle| 14 | 15 | ### 工程配置 16 | 17 | 1.在 info.plist 中添加 sinaweibo 字段,填入自己帐号的信息,如下图 18 | 19 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/sinaweibo_320_before.png) 20 | 21 | #### 注意 SDK 3.2.0+ 必须按照下图填写 22 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/sinaweibo_plist.png) 23 | 24 | 25 | 2.在工程的 info -> URL types 中添加配置,identifier 填写`com.weibo`,URL Schemes 填写`wb[后面填写appkey]`,如下图所示 26 | 27 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/share/shareweibo1.png) 28 | 29 | 30 | 3.在 info.plist 添加 Schemes 白名单 31 | 32 | ![](https://ask.dcloud.net.cn/uploads/article/20151222/9637d63385bc52fee7cdfd45ee3aee55.png) 33 | 34 | #### 注意 SDK 3.2.0+ 必须按照下图填写 35 | ![](https://img-cdn-aliyun.dcloud.net.cn/nativedocs/nativeplugin/Iosimgs/weibo3_3.jpg) 36 | 37 | 38 | 配置Associated Domains(域名) 39 | 40 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/2d348820422e3b02d8a65b8f6c6cd830.png) 41 | 42 | 填写通用链接域名 43 | 44 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 45 | 46 | 47 | 48 | ## QQ分享 49 | 50 | ### 添加依赖库及资源 51 | 52 | |依赖库|系统库|依赖资源| 53 | |:--|:--|:--| 54 | |liblibShare.a、libQQShare.a、TencentOpenAPI.framework|无|无| 55 | 56 | ### 工程配置 57 | 1.在工程的 info -> URL types 中添加配置,identifier 填写`tencentopenapi `,URL Schemes 填写`tencent[后面填写appid]`,如下图所示 58 | 59 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/share/shareqq1.png) 60 | 61 | 2.在 info.plist 添加 Schemes 白名单 62 | 63 | ![](https://ask.dcloud.net.cn/uploads/article/20150929/9f59a997933e98849dad6289c83cce9d.png) 64 | 65 | 66 | #### 注意 SDK 3.2.0+ 必须按照下图填写 67 | 1. 在 info.plist 中添加 qq 字段,填入自己帐号的信息 68 | 69 | ![](https://img-cdn-aliyun.dcloud.net.cn/nativedocs/nativeplugin/Iosimgs/qq_plist.jpg) 70 | 71 | 2. 配置Associated Domains(域名) 72 | 73 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/2d348820422e3b02d8a65b8f6c6cd830.png) 74 | 75 | 填写通用链接域名 76 | 77 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 78 | 79 | 80 | ## 微信分享 81 | ### 添加依赖库及资源 82 | 83 | |依赖库|系统库|依赖资源| 84 | |:--|:--|:--| 85 | |liblibShare.a、libweixinShare.a、libWeChatSDK.a|libsqlite3.0.tbd、libz.tbd、CoreTelephony.framework、SystemConfiguration.framework|无| 86 | 87 | 注意:SDK 中的 88 | 89 | - libWeChatSDK_pay.a 为带支付功能的微信SDK,支持微信分享、微信支付及微信授权登录功能 90 | - libWeChatSDK.a 为不带支付功能的SDK,仅支持微信分享和授权登录,**不使用支付功能请添加此库,避免审核被拒** 91 | - 不要同时添加到工程避免冲突 92 | 93 | ### 工程配置 94 | 95 | 1.在工程的 info -> URL types 中添加配置,identifier 填写`weixin`,URL Schemes 填写`wx[后面填写appid]`,如下图所示 96 | 97 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/share/shareWeixin1.png) 98 | 99 | 2.在 info.plist 添加 Schemes 白名单 100 | 101 | ![](https://ask.dcloud.net.cn/uploads/article/20191203/7bc7afb901b0c2a7b8f057be5cc81a89.png) 102 | 103 | 3.配置Associated Domains(域名) 104 | 105 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/2d348820422e3b02d8a65b8f6c6cd830.png) 106 | 107 | 填写通用链接域名 108 | 109 | ![](https://ask.dcloud.net.cn/uploads/article/20191024/0221225d811e93279784d3235a32d055.png) 110 | 111 | 4.在info.plist root 节点添加`UniversalLinks`字段,值和您在微信开放平台配置的一致,参考如下:(SDK 3.2.0版本以后 此项已废弃,仅保留字段,配置参数已经位置如步骤5所示) 112 | 113 | ![](https://ask.dcloud.net.cn/uploads/article/20191016/dfc79b582f04429a83bc2640ec26b2e2.png) 114 | 115 | 5.在 info.plist 添加 `weixin`(3.2.0 以前为`weixinoauth`) 项,填写微信 `appid` 及 `UniversalLinks`,值和您在微信开放平台配置的一致,参考如下: 116 | 117 | ![](https://native-res.dcloud.net.cn/images/uniapp/oauth/weixin_plist.png) 118 | 119 | 6.在工程的 AppDelegate.m 系统通用链接回调方法中调用框架方法如下: 120 | 121 | ``` 122 | - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable))restorationHandler { 123 | // 通过通用链接唤起 App 124 | [DCUniMPSDKEngine application:application continueUserActivity:userActivity]; 125 | return YES; 126 | } 127 | ``` 128 | 129 | -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/speech.md: -------------------------------------------------------------------------------- 1 | ## 百度语音配置 2 | ### 添加依赖资源 3 | 4 | 将百度语音模块依赖库及资源添加到工程 5 | 6 | |依赖库|系统库|依赖资源| 7 | |:--|:--|:--| 8 | |liblibSpeech.a、libBaiduSpeechSDK.a、libbaiduSpeech.a|libc++.tbd、libz.tbd、libsqlite3.tbd、AudioToolbox.framework、AVFoundation.framework、CFNetwork.framework、CoreLocation.framework、CoreTelephony.framework、SystemConfiguration.framework、GLKit.framework|BDSClientEASRResources文件夹里的资源文件| 9 | 10 | ### 帐号配置 11 | 首先到[百度语音官方网站](https://ai.baidu.com/tech/speech/asr) 创建应用获取 AppID、APIKey 等信息。 12 | 13 | ![](https://ask.dcloud.net.cn/uploads/article/20200416/d7c44c0e43904b5a05f6f438c89c31b3.png) 14 | 15 | 然后在 info.plist 中创建 baiduspeech 节点,填入自己帐号的信息,按照下图中的格式创建 16 | 17 | ![](https://ask.dcloud.net.cn/uploads/article/20181217/42ccf61d3d132f7698201124e0ee2ff8.png) 18 | 19 | 20 | ## 讯飞语音配置 21 | ### 添加依赖资源 22 | 将讯飞语音模块依赖库及资源添加到工程 23 | 24 | |依赖库|系统库|依赖资源| 25 | |:--|:--|:--| 26 | |liblibSpeech.a、libiflySpeech.a、iflyMSC.framework|AVFoundation.framework、AddressBook.framework、Contacts.framework|无| 27 | 28 | **注意:iflyMSC.framework 库需要开发者在[讯飞语音官方网站](https://console.xfyun.cn/)自行生成,因为需要跟您的AppId绑定,SDK内的库无法在您的App中使用;** 29 | 30 | ### 帐号配置 31 | 首先到[讯飞语音官方网站](https://console.xfyun.cn/app/myapp)创建App,获取 appid 信息。 32 | 33 | ![](https://ask.dcloud.net.cn/uploads/article/20200416/a36252c51d38d37446f96794025ddcbd.png) 34 | 35 | 然后在 info.plist 中创建 iFly 节点,填入自己帐号的信息,按照下图中的格式创建 36 | 37 | ![](https://ask.dcloud.net.cn/uploads/article/20200409/98a2e2ae9cb110890e51c8bf769f87a7.png) 38 | 39 | **注意:语言识别功能百度模块或讯飞模块只能选一个** -------------------------------------------------------------------------------- /docs/UniMPDocs/UseModule/ios/umstatistic.md: -------------------------------------------------------------------------------- 1 | ## 添加依赖资源及文件 2 | 3 | ### 将友盟统计模块依赖库及资源添加到工程 4 | 5 | (3.3.7 之前) 6 | 7 | |依赖库|系统库|资源文件| 8 | |:--|:--|:--| 9 | |liblibStatistic.a、UMDevice.framework、UMCommon.framework、UMAPM.framework|libz.tbd、libsqlite3.tbd、SystemConfiguration.framework、CoreTelephony.framework|无| 10 | 11 | (3.3.7 之后) 12 | 13 | |依赖库|系统库|依赖资源| 14 | |:--|:--|:--| 15 | |liblibStatistic.a、libUmengStatistic.a、UMDevice.xcframework、UMCommon.xcframework、UMAPM.framework|libz.tbd、libsqlite3.tbd、SystemConfiguration.framework、CoreTelephony.framework|无| 16 | 17 | 18 | **3.3.7 之后 还需要在/SDK/Bundles/PandoraApi.bundle/feature.plist文件中 修改如下字段** 19 | ![](https://native-res.dcloud.net.cn/images/uniapp/statistic/feature_umeng.png) 20 | 21 | ### 帐号配置 22 | 1.到[友盟开放平台](http://www.umeng.com/analytics)申请Appkey 23 | 24 | 2.打开Info.plist文件找到umeng项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey 25 | 26 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/statistic/2117.png) 27 | 28 | **注意:** 29 | IDFA说明 30 | 31 | 从HBuilderX2.2.5版本之后(含2.2.5),基座里集成了友盟v6.0.5统计SDK,因友盟官方,从组件化产品开始,【友盟+】SDK默认采集idfa标识,用来更准确的分析核对数据。对于应用本身没有获取idfa的情况,建议将应用提交至AppStore时按如下方式配置:(以避免被苹果以“应用不含广告功能,但获取了广告标示符IDFA”的而拒绝其上架。) 32 | 33 | ![](https://img.cdn.aliyun.dcloud.net.cn/nativedocs/5SDKiOS/statistic/40552.png) 34 | ### 隐私清单 35 | ![友盟统计隐私清单](https://web-ext-storage.dcloud.net.cn/doc/app/ios/native-ios-statistic-umeng-privacyinfo.jpg) -------------------------------------------------------------------------------- /docs/_sidebar.md: -------------------------------------------------------------------------------- 1 | * [概述](README.md) 2 | * 集成教程 3 | * [Android 集成教程](UniMPDocs/UseSdk/android.md) 4 | * [iOS 集成教程](UniMPDocs/UseSdk/ios.md) 5 | * 功能示例 6 | * [Android 平台 V2版本](UniMPDocs/Sample/android-v2.md) 7 | * [iOS 平台](UniMPDocs/Sample/ios.md) 8 | * API 参考手册 9 | * [Android API V2版本参考手册](UniMPDocs/API/android-v2.md) 10 | * [iOS API 参考手册](UniMPDocs/API/ios.md) 11 | * 内置功能模块集成 12 | * [Android 集成教程](UniMPDocs/UseModule/android/android.md) 13 | * [Share(分享)](UniMPDocs/UseModule/android/share.md) 14 | * [Oauth(登录鉴权)](UniMPDocs/UseModule/android/oauth.md) 15 | * [Map(地图)](UniMPDocs/UseModule/android/map.md) 16 | * [Payment(支付)](UniMPDocs/UseModule/android/payment.md) 17 | * [Speech(语音输入)](UniMPDocs/UseModule/android/speech.md) 18 | * [LivePusher(直播推流)](UniMPDocs/UseModule/android/livepusher.md) 19 | * [X5(腾讯x5内核)](UniMPDocs/UseModule/android/x5.md) 20 | * [Geolocation(定位)](UniMPDocs/UseModule/android/geolocation.md) 21 | * [第三方 SDK 依赖说明](AppDocs/usemodule/androidModuleConfig/android_Library.md) 22 | * [iOS 集成教程](UniMPDocs/UseModule/ios/ios.md) 23 | * [Share(分享)](UniMPDocs/UseModule/ios/share.md) 24 | * [Oauth(登录鉴权)](UniMPDocs/UseModule/ios/oauth.md) 25 | * [Map(地图)](UniMPDocs/UseModule/ios/map.md) 26 | * [Payment(支付)](UniMPDocs/UseModule/ios/payment.md) 27 | * [Speech(语音输入)](UniMPDocs/UseModule/ios/speech.md) 28 | * [LivePusher(直播推流)](UniMPDocs/UseModule/ios/livepusher.md) 29 | * [Statistic(友盟统计)](UniMPDocs/UseModule/ios/umstatistic.md) 30 | * [Geolocation(定位)](UniMPDocs/UseModule/ios/geolocation.md) 31 | * [第三方 SDK 依赖说明](AppDocs/usemodule/iOSModuleConfig/dependentLibrary.md) 32 | * 扩展原生能力 33 | * [Android 扩展教程](UniMPDocs/Extension/android.md) 34 | * [iOS 扩展教程](UniMPDocs/Extension/ios.md) 35 | * 下载 36 | * [Android SDK 下载](UniMPDocs/SDKDownload/android.md) 37 | * [iOS SDK 下载](UniMPDocs/SDKDownload/ios.md) 38 | * [源码公开策略](UniMPDocs/SDKDownload/opensource.md) 39 | * 常见问题 40 | * [Android 常见问题](UniMPDocs/FAQ/android.md) 41 | * [iOS 常见问题](UniMPDocs/FAQ/ios.md) -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "native-docs-zh", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "directories": { 7 | "doc": "docs" 8 | }, 9 | "scripts": { 10 | "dev": "vuepress dev docs", 11 | "build": "node --max_old_space_size=3072 ./node_modules/vuepress/cli.js build docs --no-cache", 12 | "sitemap": "node ./script/createSiteMap.js", 13 | "check-md":"vuepress check-md2 docs" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/dcloudio/unidoc-zh.git" 18 | }, 19 | "keywords": [], 20 | "author": "", 21 | "license": "ISC", 22 | "bugs": { 23 | "url": "https://github.com/dcloudio/native-docs-zh/issues" 24 | }, 25 | "homepage": "https://github.com/dcloudio/native-docs-zh#readme", 26 | "devDependencies": { 27 | "clipboard": "^2.0.10", 28 | "dom-serializer": "^2.0.0", 29 | "fs-extra": "^10.0.0", 30 | "glob": "^7.1.7", 31 | "htmlparser2": "^9.0.0" 32 | }, 33 | "dependencies": { 34 | "vuepress-theme-uniapp-official": "^1.4.25", 35 | "vuepress": "1.9.9" 36 | }, 37 | "resolutions": { 38 | "terser-webpack-plugin": "1.4.6" 39 | } 40 | } 41 | --------------------------------------------------------------------------------