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
- Add dependency in
<app-name>/android/app/build.gradle
dependencies {
implementation "com.github.freshdesk:freshchat-android:3.3.0"
}
- Create
FreshchatMessagingService.java
(Java, not Kotlin) class to your app in the same directory as yourMainActivity
class
package 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);
}
}
}
- In
AndroidManifest.xml
add
<service android:name=".FreshchatMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
- In your
Application
class change
FlutterFirebaseMessagingService.setPluginRegistrant(this)
to
FreshchatMessagingService.setPluginRegistrant(this)
- Add this to info.plist
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>
- If you encounter
non-modular header
error during project build
error: include of non-modular header inside framework module 'flutter_freshchat.FlutterFreshchatPlugin'
You may have to do this each time your switch or rebuild the xcode project from flutter.
- Manually in xcode update the FreshchatSDK.h to be in the flutter_freshchat target and public.
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:- US - https://msdk.freshchat.com (default)
- AU - https://msdk.au.freshchat.com
- EU - https://msdk.eu.freshchat.com
- IN - https://msdk.in.freshchat.com
- US2 - https://msdk.us2.freshchat.com
-
cameraEnabled
property is used to either enable or disable camera within freshchat conversation widget. It default value is set totrue
. -
gallerySelectionEnabled
property is used to either enable or disable gallery within freshchat conversation widget. It default value is set totrue
. -
teamMemberInfoVisible
property is used to show team member info within freshchat conversation widget. It default value is set totrue
. -
responseExpectationEnabled
property is used to show exceptions that occur within freshchat conversation widget. It default value is set totrue
. -
showNotificationBanner
property is used enabled or disable in-app notification banner. It default value is set totrue
. (NOTE: IOS only). -
notificationSoundEnabled
property is used enabled or disable in-app notification sound. It default value is set totrue
. (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 = "[email protected]";
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!