Cài đặt
Yêu cầu
- React Native 0.75 trở lên với New Architecture đã bật, hoặc Expo SDK 51+ với New Architecture đã bật (mặc định bật từ SDK 52).
- iOS: phiên bản iOS tối thiểu của bản React Native bạn đang dùng. Podspec dùng
min_ios_version_supportedvà linkUIKitcùngPencilKit. - Android: API 24 (Android 7.0) trở lên.
Thư viện không phụ thuộc native nào của bên thứ ba: không Skia, không Reanimated, không WebView.
Thêm package
npm install react-native-signature-inkyarn add react-native-signature-inkThư viện được autolink. Không có config plugin và không cần đăng ký gì bằng tay.
iOS
cd ios && pod installNếu bạn gọi saveToPhotoLibrary(), hãy thêm key sau vào Info.plist của app. iOS sẽ tắt app nếu thiếu key này khi cần hiện hộp thoại xin quyền.
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Lưu chữ ký của bạn vào thư viện ảnh.</string>Android
Từ API 29 trở lên không cần cấu hình gì.
Để dùng saveToPhotoLibrary() trên API 28 trở xuống, khai báo quyền lưu trữ cũ trong AndroidManifest.xml của app:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />Thư viện có sẵn FileProvider riêng (class com.signatureink.SignatureInkFileProvider, authority ${applicationId}.signatureinkprovider) cho copyToClipboard(). Nó được merge vào manifest tự động và không xung đột với các khai báo FileProvider khác.
Expo
Thư viện chạy trong development build và mọi project dùng expo prebuild. Nó không chạy trên Expo Go, vì Expo Go không load được native code tuỳ chỉnh.
npx expo install react-native-signature-ink
npx expo prebuild # hoặc build dev client / EAS buildTrên SDK 51, bật New Architecture trong app.json bằng "newArchEnabled": true.
Khai báo quyền ảnh của iOS trong app.json thay vì sửa Info.plist, vì prebuild sẽ sinh lại file này:
{
"expo": {
"ios": {
"infoPlist": {
"NSPhotoLibraryAddUsageDescription": "Lưu chữ ký của bạn vào thư viện ảnh."
}
}
}
}Với saveToPhotoLibrary() trên Android API 28 trở xuống, thêm WRITE_EXTERNAL_STORAGE bằng một config plugin nhỏ hoặc expo-build-properties. FileProvider cho clipboard không cần cấu hình.
Sau khi nâng cấp
Native view được sinh từ TypeScript spec lúc build. Sau khi nâng cấp package, hãy chạy lại pod install và build lại app native; reload Metro là chưa đủ. Nếu Android vẫn dùng code sinh cũ, chạy ./gradlew clean trong android/.
Tiếp theo
Tiếp tục với Bắt đầu nhanh.