Você pode adicionar Xtremepush aos seus apps Flutter rapidamente seguindo nossa integração nativa para Android e iOS, e então adicionando um canal de método para se comunicar do seu código Dart para a respectiva plataforma. Siga nosso guia abaixo para mostrar como isso pode ser feito.
Certifique-se de que seus aplicativos móveis estejam adicionados ao Xtremepush, seguindo os guias para Android e iOS.
O Xtremepush.dart arquivo e o código de integração podem ser baixados aqui.
Adição do canal do método
Adicione o Xtremepush.dart arquivo ao seu diretório principal de bibliotecas, ao lado do main.dart arquivo.
Android
Na sua MainActivity.java aula, adicione o canal do método Xtremepush adicionando o seguinte:
private static final String CHANNEL = "ie.imobile.xtremepush/flutter";
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
(call, result) -> {
// Note: this method is invoked on the main thread.
switch (call.method) {
case "hitEvent":
final String xpEvent = call.argument("xpEvent");
mPushConnector.hitEvent(xpEvent);
break;
case "hitTag":
final String xpTag = call.argument("xpTag");
mPushConnector.hitTag(xpTag);
break;
case "hitTagWithValue":
final String xpTagw = call.argument("xpTag");
final String xpTagValue = call.argument("xpTagValue");
mPushConnector.hitTag(xpTagw, xpTagValue);
break;
case "setUser":
final String user_id = call.argument("xp_user_id");
mPushConnector.setUser(user_id);
break;
case "setTempUser":
final String temp_user_id = call.argument("xp_temp_user_id");
mPushConnector.setTempUser(temp_user_id);
break;
case "openInbox":
mPushConnector.openInbox(this);
break;
case "setSubscription":
final boolean sub_status = call.argument("subscription_flag");
mPushConnector.setSubscription(sub_status);
break;
case "getInboxList":
final int offset = call.argument("offset");
final int limit = call.argument("limit");
mPushConnector.inboxListWithOffset(this, offset, limit);
break;
case "requestNotificationPermissions":
mPushConnector.requestNotificationPermissions(this);
break;
}
}
);
}override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result? ->
when (call.method) {
"hitEvent" -> {
val xpEvent = call.argument<String>("xpEvent")
PushConnector.mPushConnector.hitEvent(xpEvent)
}
"hitTag" -> {
val xpTag = call.argument<String>("xpTag")
PushConnector.mPushConnector.hitTag(xpTag)
}
"hitTagWithValue" -> {
val xpTagw = call.argument<String>("xpTag")
val xpTagValue = call.argument<String>("xpTagValue")
PushConnector.mPushConnector.hitTag(xpTagw, xpTagValue)
}
"setUser" -> {
val user_id = call.argument<String>("xp_user_id")
PushConnector.mPushConnector.setUser(user_id)
}
"setTempUser" -> {
val temp_user_id = call.argument<String>("xp_temp_user_id")
PushConnector.mPushConnector.setTempUser(temp_user_id)
}
"openInbox" -> PushConnector.mPushConnector.openInbox(this)
"setSubscription" -> {
val sub_status = call.argument<Boolean>("subscription_flag")!!
PushConnector.mPushConnector.setSubscription(sub_status)
}
}
}
}
companion object {
private const val CHANNEL = "ie.imobile.xtremepush/flutter"
}iOS
Na chamada do didFinishLaunching seu AppDelegate, adicione o canal do método como abaixo:
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let xtremepushChannel = FlutterMethodChannel(name: "ie.imobile.xtremepush/flutter",
binaryMessenger: controller.binaryMessenger)
xtremepushChannel({
(call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
switch call.method {
case "hitEvent":
let xpEvent = call.arguments["xpEvent"] as! String
XPush.hitEvent(xpEvent)
case "hitTag":
let xpTag = call.arguments["xpTag"] as! String;
XPush.hitTag(xpTag)
case "hitTagWithValue":
let xpTag = call.arguments["xpTag"] as! String;
let xpTagValue = call.arguments["xpTagValue"] as! String;
XPush.hitTag(xpTag, withValue: xpTagValue)
case "setUser":
let userId = call.arguments["xp_user_id"] as! String;
XPush.setUser(userId)
case "setTempUser":
let userId = call.arguments["xp_temp_user_id"] as! String;
XPush.setTempUser(userId)
case "openInbox":
XPush.openInbox()
case "setSubscription":
let subscription_flag = (call.arguments["xp_temp_user_id"] as! NSNumber).boolValue;
XPush.setSubscription(subscription_flag)
}
})[xtremepushChannel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) {
if ([@"hitEvent" isEqualToString:call.method]) {
NSString *xpEvent = call.arguments[@"xpEvent"];
[XPush hitEvent: xpEvent];
}
if ([@"hitTag" isEqualToString:call.method]) {
NSString *xpTag = call.arguments[@"xpTag"];
[XPush hitTag: xpTag];
}
if ([@"hitTagWithValue" isEqualToString:call.method]) {
NSString *xpTag = call.arguments[@"xpTag"];
NSString *xpTagValue = call.arguments[@"xpTagValue"];
[XPush hitTag: xpTag withValue:xpTagValue];
}
if ([@"setUser" isEqualToString:call.method]) {
NSString *xpUser = call.arguments[@"xp_user_id"];
[XPush setUser: xpUser];
}
if ([@"setTempUser" isEqualToString:call.method]) {
NSString *xpUser = call.arguments[@"xp_temp_user_id"];
[XPush setTempUser: xpUser];
}
if ([@"openInbox" isEqualToString:call.method]) {
[XPush openInbox];
}
if ([@"setSubscription" isEqualToString:call.method]) {
BOOL subscription_flag = [call.arguments[@"subscription_flag"] boolValue];
[XPush setSubscription: subscription_flag];
}
}];Chamando funções Xtremepush a partir do Dart
No seu arquivo Dart, importe Xtremepush do arquivo Xtremepush.dart:
import 'Xtremepush.dart';Você pode então chamar as funções usando o seguinte:
Xtremepush.hitEvent("string");
Xtremepush.hitTag("string");
Xtremepush.hitTagWithValue("string", "string");
Xtremepush.hitEvent("string");
Xtremepush.setUser("string");
Xtremepush.setTempUser("string");
Xtremepush.openInbox();
Xtremepush.getInboxList(offset, limit);
Xtremepush.setSubscription(true/false);Certifique-se de definir o ID do usuário
Recomenda-se que, nesta fase, você use nosso método SDK para definir IDs de usuário, seguindo nosso guia dedicado para garantir que os dispositivos possam ser associados e direcionados em suas campanhas por seu próprio identificador único.