Framework Flutter
Para comenzar a operar localmente con Redelcom utilizando una App Flutter, sigue los pasos debajo.
Instalar y configurar plugins
Para poder establecer la comunicación con el sistema RDCPass, deberás instalar los plugins agregando el siguiente bloque a pub.dev
:
flutter
Package_info 0.4.3+4 => (https:// pub.dev/packages/package_info) android_intent 0.3.7+7 => (https:// pub.dev/packages/android_intent)
Una vez instalados, deberás iniciar la configuración importando los paquetes al main.dart
:
flutter
import 'package:package_info/package_info.dart'; import 'package:android_intent/android_intent.dart';
Enviar y recibir intent desde una App nativa en Android
Para procesar pagos, deberás primero implementar el método que te permitirá enviar un intent a una App nativa en Android:
flutter
Future<void> _intentSend() async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); setState(() { String packageName = packageInfo.packageName; final AndroidIntent intent = AndroidIntent( action: 'android.intent.action.SEND', package: 'redelcom.cl.rdcpass ', arguments: <String, dynamic>{ 'packageName': packageName, 'className': '$packageName.MainActivity', 'monto': '200', //pasar la cantidad del envío }, componentName: 'redelcom.cl.rdcpass.MainActivity', ); intent.launch(); }); }
Para poder obtener la respuesta a ese intent deberás, primero, agregar el siguiente bloque al main.dart
:
flutter
static const platform = const MethodChannel('app.channel.shared.data'); String data = "No hay datos"; @Override void initState() { super.initState(); getSharedIntent(); } getSharedIntent() async { var sharedData = await platform.invokeMethod("getSharedText"); if (sharedData != null) { setState(() { data = sharedData; // Do something… }); } }
Luego, agrega el siguiente bloque en MainActivity.java
:
flutter
private String sharedIntent; private static final String CHANNEL = "app.channel.shared.data"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { Intent intent = getIntent(); String action = intent.getAction(); if (action != null && Intent.ACTION_SEND.equals(action)) { handleSend(intent); } } catch (Exception e) { e.printStackTrace(); } } @Override public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine); new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL) .setMethodCallHandler( (call, result) -> { if (call.method.contentEquals("getSharedText")) { result.success(sharedIntent); sharedIntent = null; } } ); } void handleSend(Intent intent) { sharedIntent = intent.getStringExtra(Intent.EXTRA_TEXT); }
Por último, agrega el intent-filter (Activity) al AndroidManifest.xml
de la app compilada:
flutter
<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/*" /> </intent-filter>
¡Y listo! Ya puedes comenzar a operar con Redelcom desde tu app Flutter.