- 版本:1.6.0
- GitHub:
- NPM: https://npmjs.net.cn/package/nativescript-adobe-marketing-cloud
- 下载量
- 昨天:0
- 上周:0
- 上个月:20
Nativescript Adobe Marketing Cloud 解决方案插件
npm install nativescript-adobe-marketing-cloud --save
基于
- https://github.com/Adobe-Marketing-Cloud/mobile-services/releases/tag/v4.13.4-iOS
- https://github.com/Adobe-Marketing-Cloud/mobile-services/releases/tag/v4.13.4-Android
设置应用程序以使用此插件。
设置生命周期跟踪
监听生命周期事件
import * as application from "application";
import {AdobeAnalytics} from "nativescript-adobe-marketing-cloud";
application.on(application.launchEvent, function (args: application.ApplicationEventData) {
if (args.android) {
AdobeAnalytics.getInstance().setContext(application.android.context);
} else if (args.ios !== undefined) {
AdobeAnalytics.getInstance().collectLifecycleData(null);
}
});
application.on(application.suspendEvent, function (args: application.ApplicationEventData) {
if (args.android) {
AdobeAnalytics.getInstance().pauseCollectingLifecycleData();
}
});
application.on(application.resumeEvent, function (args: application.ApplicationEventData) {
if (args.android) {
AdobeAnalytics.getInstance().collectLifecycleData(application.android.foregroundActivity);
}
});
if (application.android) {
application.android.on(application.AndroidApplication.activityPausedEvent, function (args: application.AndroidActivityEventData) {
AdobeAnalytics.getInstance().pauseCollectingLifecycleData();
});
application.android.on(application.AndroidApplication.activityResumedEvent, function (args: application.AndroidActivityEventData) {
AdobeAnalytics.getInstance().collectLifecycleData(application.android.foregroundActivity);
});
}
application.start({ moduleName: "main-page" });
设置 ADBMobileConfig.json
从 Adobe 控制面板获取配置文件。
iOS
将 ADBMobileConfig.json
文件放置在 app\App_Resources\iOS
Android
将 adbmobileconfig.json
文件放置在 app\App_Resources\Android\raw
跟踪状态和操作
状态和操作可以通过与它们的本地对应者签名匹配的方法调用进行追踪。
隐私选项
见:https://marketing.adobe.com/resources/help/en_US/mobile/ios/privacy.html
选择隐私选项
直到用户选择退出前发送数据
AdobeAnalytics.getInstance().optIn();
直到用户选择加入前保留数据
AdobeAnalytics.getInstance().optOut();
在应用程序和移动网页之间的访客跟踪
见:https://marketing.adobe.com/resources/help/en_US/mobile/ios/hybrid_app.html 您可以调用
AdobeAnalytics.getInstance().visitorAppendToURL(url);
这将返回一个带有访客ID扩展的提供的url。
开发设置
为了便于开发和调试,请继续以下步骤
- 打开命令提示符/终端,导航到
src
文件夹并运行npm run demo.ios
或npm run demo.android
以运行演示。 - 打开另一个命令提示符/终端,导航到
src
文件夹并运行npm run plugin.tscwatch
以监视插件中的文件更改。
现在去修改您的插件。它将被自动应用到演示项目中。
注意:如果您需要在插件中使用原生库或在 Info.plist/AndroidManifest.xml 中进行更改,这些更改只能通过 npm link 应用到演示项目。在这种情况下,您需要从 demo
中使用 tns plugin add ../src
,以便将原生库和上述文件中的更改应用到演示中。然后您可以从 src
中再次使用 npm run plugin.link
将插件代码链接到演示中。
链接到 CocoaPod 或 Android Arsenal 插件
为了使用原生 API,您需要在 src
文件夹中创建以下文件夹和文件
platforms --
ios --
Podfile
android --
include.gradle
这样做将为您的插件打开这些原生 API :)
请查看这些现有插件以了解如何简单完成此操作
清理插件和演示文件
有时您可能需要删除 node_modules
和 demo/platforms
文件夹以重新安装它们。
- 运行
npm run clean
删除这些文件,然后您可以运行npm i
以重新安装依赖项。
有时您只需要删除演示的 platforms
目录
- 运行
npm run demo.reset
仅删除演示的platforms
目录。
有时您可能需要确保插件文件在演示中已更新
- 运行
npm run plugin.prepare
将重新构建插件,然后将其从演示中删除并重新添加以确保。
单元测试
插件种子自动将基于 Jasmine 的单元测试支持添加到您的插件中。打开 demo/app/tests/tests.js
并调整其内容,以便测试在您插件的上下文中变得有意义。
您可以在 这里 了解更多关于这个主题的信息。
一旦您准备好测试插件 API,请转到 src
文件夹并执行以下命令之一
npm run test.ios
npm run test.android
发布到 NPM
当您准备发布所有内容时
- 在
src/package.json
中提升版本号 - 转到
publish
并执行publish.sh
(如果文件不可执行,请运行chmod +x *.sh
)
如果您只想创建一个包,请转到 publish
文件夹并执行 pack.sh
。包将创建在 publish/package
文件夹中。
注意:要在 Windows 上运行 bash 脚本,您可以安装 GIT SCM 并使用 Git Bash。
TravisCI
插件结构附带一个完全功能的 .travis.yml 文件,该文件在 Android 模拟器和 iOS 模拟器上部署测试应用程序,并作为后续步骤在 单元测试部分 运行测试。在克隆存储库并实现您的插件和测试之后,您只需在 https://travis-ci.org/ 上注册。然后,在 "https://travis-ci.org/profile/<您的 GitHub 用户>" 上启用您的插件存储库,这样就完成了。下次有人提交 PR 或更改到分支时,TravisCI 将触发构建以测试代码。
为了正确显示当前构建状态,您需要编辑 README.md 文件开头的徽章,使其与您的存储库、用户和分支匹配。
在插件中引用 tns-core-modules
由于 Angular CLI 中存在一个问题,我们建议使用完整的 tns-core-modules
导入。有关更详细的解释,请参阅 此讨论。
最终,当 Angular CLI 中的问题得到解决后,这不再是一个限制,但在此之前,建议的方法是从 tns-core-modules
使用完整路径进行导入。以下是一个示例
错误
tsconfig.json
...
"paths": {
"*": [
"./node_modules/*",
"./node_modules/tns-core-modules/*"
]
}
...
yourplugin.common.ts
import * as app from 'application';
正确
yourplugin.common.ts
import * as app from 'tns-core-modules/application';