flutter_freshchat
モバイルアプリに Freshchat を統合するための Flutter プラグイン。
Freshchat用の非公式Flutterプラグイン
{"sdk":"flutter"}{"sdk":"flutter"}以下は英語原文のスナップショットです。最新版は GitHub をご覧ください。
Add this to your AndroidManifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.demoapp.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/freshchat_file_provider_paths" />
</provider>
If you have migrated to AndroidX your might need change the provider attribute android:name to this:
<provider android:name="androidx.core.content.FileProvider">
</provider>
Add this to your Strings.xml located inside android/src/res/values
<string name="freshchat_file_provider_authority">com.example.demoapp.provider</string>
Firebase Cloud Messaging support
<app-name>/android/app/build.gradledependencies {
implementation "com.github.freshdesk:freshchat-android:3.3.0"
}
FreshchatMessagingService.java (Java, not Kotlin) class to your app in the same directory as your MainActivity classpackage com.example.app;
import com.freshchat.consumer.sdk.Freshchat;
import com.google.firebase.messaging.RemoteMessage;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;
public class FreshchatMessagingService extends FlutterFirebaseMessagingService {
@Override
public void onNewToken(String token) {
super.onNewToken(token);
}
@Override
public void onMessageReceived(final RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (Freshchat.isFreshchatNotification(remoteMessage)) {
Freshchat.handleFcmMessage(this, remoteMessage);
}
}
}
AndroidManifest.xml add<service android:name=".FreshchatMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Application class changeFlutterFirebaseMessagingService.setPluginRegistrant(this)
to
FreshchatMessagingService.setPluginRegistrant(this)
Starting with iOS 10, Apple requires developers to declare access to privacy-sensitive controls ahead of time.
<key>NSPhotoLibraryUsageDescription</key>
<string>To Enable access to Photo Library</string>
<key>NSCameraUsageDescription</key>
<string>To take Images from Camera</string>
non-modular header error during project builderror: include of non-modular header inside framework module 'flutter_freshchat.FlutterFreshchatPlugin'
- Manually in xcode update the FreshchatSDK.h to be in the flutter_freshchat target and public. FreshchatSDK_fix You may have to do this each time your switch or rebuild the xcode project from flutter.
To use this plugin, add flutter_freshchat as a dependency in your pubspec.yaml file.
import 'package:flutter_freshchat/flutter_freshchat.dart';
Initialize the Freshchat app with appID, appKey & domain which you could get from here: Where to find App ID and App Key
It has following [FreshchatConfig] properties:
domain Each Freshchat cluster falls in to one of this domains:
cameraEnabled property is used to either enable or disable camera
within freshchat conversation widget. It default value is set to true.
gallerySelectionEnabled property is used to either enable or disable gallery
within freshchat conversation widget. It default value is set to true.
teamMemberInfoVisible property is used to show team member info
within freshchat conversation widget. It default value is set to true.
responseExpectationEnabled property is used to show exceptions that occur
within freshchat conversation widget. It default value is set to true.
showNotificationBanner property is used enabled or disable in-app notification
banner. It default value is set to true. (NOTE: IOS only).
notificationSoundEnabled property is used enabled or disable in-app notification
sound. It default value is set to true. (NOTE: IOS only).
await FlutterFreshchat.init(
appID: 'YOUR_APP_ID_HERE',
appKey: 'YOUR_APP_KEY_HERE',
domain: 'https://msdk.freshchat.com'
);
Update the user info by setting by creating a FreshchatUser object
FreshchatUser user = FreshchatUser.initial();
user.email = "john@test.com";
user.firstName = "john";
user.lastName = "doe";
user.phoneCountryCode = "+91";
user.phone = "0123456789";
await FlutterFreshchat.updateUserInfo(user: user);
// Custom properties can be set by creating a Map<String, String>
Map<String, String> customProperties = Map<String, String>();
customProperties["loggedIn"] = "true";
await FlutterFreshchat.updateUserInfo(user: user, customProperties: customProperties);
Identify the user user by usin email address or any way you uniquely identify the user.
externalID is required and returns a restoreID you can save it and use to restore the chats
await FlutterFreshchat.identifyUser(externalID: 'USER_UNIQUE_ID', restoreID: 'USER_RESTORE_ID');
Show conversation opens a conversation screen and also list all the other conversation if a list obejct is supplied to it. You can also pass a title for the chat screen.
await FlutterFreshchat.showConversations(tags: const [], title: 'CHAT_SCREEN_TITLE');
Send message directly within the app without opening the Freshchat interface. tag is optional.
await FlutterFreshchat.send(message: 'YOUR_MESSAGE_HERE', tag: 'YOUR_TAG_HERE');
ShowFAQs opens a FAQ screen in a grid like format as default you can change the default setting by changing this paramters.
showFaqCategoriesAsGrid = true
showContactUsOnAppBar = true
showContactUsOnFaqScreens = false
showContactUsOnFaqNotHelpful = false
await FlutterFreshchat.showFAQs();
Gets the unseen message count from freshchat you can use this to show a counter.
int count = await FlutterFreshchat.getUnreadMsgCount();
Reset user data at logout or when deemed appropriate based on user action in the app.
await FlutterFreshchat.resetUser();
Find the example wiring in the Flutter_Freshchat example application.
See the flutter_freshchat.dart for more API details
Please file issues to send feedback or report a bug. Thank you!