nativeScript-zendesk-monety
您出色的 NativeScript 插件。
npm i --save nativescript-zendesk-monety

注意:从 https://github.com/rhanb/nativescript-zendesk-sdk 分支而来,并将其转换为 npm 包,以便使用 TNS 6 和最新版本的 zendesk SDK。

nativescript-zendesk-sdk

npm npm

一个使用 TypeScript 实现基本 Zendesk SDK 的 NativeScript 插件。它受到 nativescript-zendesk 的启发

安装

tns plugin add nativescript-zendesk-sdk

用法

遵循 Zendesk Embeddables 文档

[必须做] 在 Zendesk Support 中配置应用程序

支持 SDK for Android / iOS

[必须做] 初始化 SDK

支持 SDK for Android / iOS

export interface InitConfig {
applicationId: string;
zendeskUrl: string;
clientId: string;
userLocale?: string;
/** AnonUserIdentity object or JWT Token string */
identity?: AnonUserIdentity | string;
}
import { ZendeskSdk } from "nativescript-zendesk-sdk";
...
const initConfig = {
...
}
ZendeskSdk.initialize(initConfig);

如果 identity: null 将创建一个新的匿名身份,但如果 identity 是未定义的,它必须在启动任何 Zendesk 视图/活动之前设置。

注意:在初始化 Zendesk 时必须指定 applicationIdzendeskUrlclientId,但地区、COPPA 合规模式和支持可以稍后设置/更改。

[必须做] 设置身份(身份验证)

支持 SDK for Android / iOS

使用匿名身份进行身份验证
ZendeskSdk.setAnonymousIdentity();
使用匿名身份进行身份验证(带详细信息)
ZendeskSdk.setAnonymousIdentity({name: "name", email: "email"});
使用您的 JWT 端点进行身份验证
ZendeskSdk.setJwtIdentity("jwtUserIdentifier");

地区设置

支持 SDK for Android / iOS

SDK 用于静态字符串的地区将与 Android 应用配置或 iOS NSUserDefaults 匹配。(如上所述,这些字符串可以覆盖或添加缺失的语言)。

设置从 Zendesk 获取的任何动态内容的地

ZendeskSdk.setUserLocale(localeCode);

配置请求

支持 SDK for Android / iOS

在打开帮助中心或创建请求之前,可以指定请求设置

export interface RequestOptions {
requestId?: string;
requestSubject?: string;
addDeviceInfo?: boolean;
tags?: string[];
files?: File[]; // android only
customFields?: CustomField[];
ticketForm?: {
ticketFormId: string;
customFields: CustomField[]
};
}

显示用户的票证

支持 SDK for Android / iOS

默认用法

ZendeskSdk.showRequestList();

显示帮助中心

支持 SDK for Android / iOS

默认用法

ZendeskSdk.showHelpCenter();

可选参数

export interface HelpCenterOptions {
/** default: { contactUsButtonVisible: false } */
articleOptions?: ArticleOptions;
/** default: false */
contactUsButtonVisible?: boolean;
/** default: false -- android only */
categoriesCollapsed?: boolean;
/** default: true -- android only */
conversationsMenu?: boolean;
}
ZendeskSdk.showHelpCenter(options);

筛选帮助中心

支持 SDK for Android / iOS

与原始 SDK 一样,一次只能使用一个筛选器。

按类别筛选

ZendeskSdk.showHelpCenterForCategoryIds(categoryIds, options);

按部分筛选

ZendeskSdk.showHelpCenterForLabelNames(labelNames, options);

按文章标签筛选

ZendeskSdk.showHelpCenterForSectionIds(sectionIds, options);

创建请求

ZendeskSdk.createRequest();

样式

支持 SDK for Android / iOS

Android

通过 app/App_Resources/Android/AndroidManifest.xml 配置,详情请参阅 此处

简单样式

Zendesk 提供了 3 个基本主题,可以使用或扩展

  • ZendeskSdkTheme.Light
  • ZendeskSdkTheme.Dark
  • ZendeskSdkTheme.Light
示例扩展PnpZendeskSdkTheme.DarkActionBar

app/App_Resources/Android/AndroidManifest.xml

    
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...>

<application
...>

<activity android:name="com.zendesk.sdk.support.SupportActivity"
android:theme="@style/MyZendeskSdkTheme.DarkActionBar"/>


<activity android:name="com.zendesk.sdk.feedback.ui.ContactZendeskActivity"
android:theme="@style/MyZendeskSdkTheme.DarkActionBar"/>


<activity android:name="com.zendesk.sdk.support.ViewArticleActivity"
android:theme="@style/MyZendeskSdkTheme.DarkActionBar"/>


<activity android:name="com.zendesk.sdk.requests.RequestActivity"
android:theme="@style/MyZendeskSdkTheme.DarkActionBar"/>


<activity android:name="com.zendesk.sdk.requests.ViewRequestActivity"
android:theme="@style/MyZendeskSdkTheme.DarkActionBar"/>

</application>
</manifest>

app/App_Resources/Android/values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
...
<style name="PnpZendeskSdkTheme.DarkActionBar" parent="ZendeskSdkTheme.Light.DarkActionBar">
<item name="colorPrimary">@color/ns_primary</item>
<item name="colorPrimaryDark">@color/ns_primaryDark</item>
<item name="colorAccent">@color/ns_accent</item>
<item name="android:actionMenuTextColor">@color/ns_blue</item>
</style>
</resources>
<style name="YourLightTheme" parent="ZendeskSdkTheme.Light">
...
</style>
<style name="YourDarkTheme" parent="ZendeskSdkTheme.Dark">
...
</style>
<style name="YourLightTheme.DarkActionBar" parent="ZendeskSdkTheme.Light.DarkActionBar">
...
</style>

iOS

import { isIOS } from 'tns-core-modules/platform';

...

if ( isIOS ) {
UINavigationBar.appearance().tintColor = new Color('#00FFFF').ios;
UINavigationBar.appearance().barTintColor = new Color('#FF00FF').ios;
UINavigationBar.appearance().titleTextAttributes =
<NSDictionary<string, any>>NSDictionary.dictionaryWithObjectForKey(
new Color('#FFFF00').ios,
NSForegroundColorAttributeName);
}

const iOSTheme: ZendeskIosThemeSimple = {
primaryColor: '#FF0000',
};
ZendeskSdk.setIosTheme(iOSTheme);

前3种颜色主要用于“新工单”屏幕的ActionBar/StatusBar,因为帮助中心使用的是常规NativeScript设置的默认ActionBar/StatusBar颜色。

这些设置可能会影响整个应用程序,但会被常规NativeScript视图忽略,但可能会影响其他第三方视图。您可能需要将这些设置与整个应用程序中使用的设置相同。

主题对象内的设置只会影响Zendesk。

贡献

项目已包含Typings和iOS元数据,以简化使用。
Typings是使用以下工具自动生成的:
https://github.com/NativeScript/android-dts-generator
https://docs.nativescript.cn/runtimes/ios/how-to/Use-Native-Libraries