Tích hợp module kiểm tra ứng dụng có được cài trên app React Native (check package installation react native)
Sau đầy là phần tích hợp module kiểm tra xem một app nào đó có được cài trong thiết bị trên Android.
Đầu tiên thì mọi người cần phải biết package name của ứng dụng đó trước vd như:
Rồi cùng TíT vào phần setup nào👌👌
- ANDROID:
Trong folder java của với đường dẫn android/app/src/main/java. Tạo mới 1 folder như TíT đang đặt là checkpackageinstallation. Và trong đó tạo 2 file:
- CheckPackageInstallationPackage.java
package com.xxx.checkpackageinstallation;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CheckPackageInstallationPackage implements ReactPackage {
// Deprecated RN 0.47
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new CheckPackageInstallationModule(reactContext));
return modules;
}
}
- CheckPackageInstallationModule.java
package com.xxx.checkpackageinstallation;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;
import android.content.pm.PackageManager;
import android.content.Context;
public class CheckPackageInstallationModule extends ReactContextBaseJavaModule {
Context ctx;
public CheckPackageInstallationModule(ReactApplicationContext reactContext) {
super(reactContext);
this.ctx = reactContext.getApplicationContext();
}
@Override
public String getName() {
return "CheckPackageInstallation";
}
@ReactMethod
public void isPackageInstalled(String packageName, Callback cb) {
PackageManager pm = this.ctx.getPackageManager();
try {
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
cb.invoke(true);
} catch (Exception e) {
cb.invoke(false);
}
}
}
Và add module này vào packages::
import com.xxx.checkpackageinstallation.CheckPackageInstallationPackage;
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
packages.add(new CheckPackageInstallationPackage());
return packages;
}
Vậy là đã setup xong cho android rồi đó. Tới bước import native module vào react native nào👯
Bạn hãy tạo một file như này để sử dụng nè 💪💪💪:
import { NativeEventEmitter, NativeModules } from "react-native";
// for IOS
const { CheckPackageInstallation} = NativeModules;
const checkPackage = () => {
const pkgName = 'com.whatsapp';
CheckPackageInstallation.isPackageInstalled(pkgName, (res: boolean) => {
if (res) {
dispatch(startVideoCall(campaignId));
} else {
showDialog({
dialogType: 'info',
message: 'Bạn cần cài đặt Whatsapp để sử dụng chức năng này!!!',
title: translate('warning'),
buttonAccept: {
label: 'Tải ngay',
onPress: _openLinkDownload,
},
buttonCancel: {
label: 'Để sau',
},
});
}
});
} else {
dispatch(startVideoCall(campaignId));
}
}
Vậy là đã xong phần tích hợp module vào React Native. TíT sẽ tiếp tục tìm hiểu trên ios, các module khác và chia sẻ với mọi người. Mong rằng mọi người hãy góp ý để TíT hoàn thiện tốt hơn