امضای نیتیو DocuSign داخل اپهای React Native
خلاصهٔ کاملتر
تو مستندات پروژه اومده که react-native-docusign یه رَپر جامعهمحور و غیررسمیه که روی Expo Modules API ساخته شده و SDKهای رسمی موبایل DocuSign رو در اختیار اپهای React Native میذاره. کاری که میکنه سادهست: رابط امضای خود DocuSign رو بهصورت نیتیو روی اپ باز میکنه، بدون WebView و بدون رابط هیبریدی. تیم پروژه تأکید میکنه که این بسته وابسته به شرکت DocuSign نیست و پذیرش لایسنس Mobile SDK با خود مصرفکنندهست.
جریان کار اینشکلیه: بکاند شما از روی یه تمپلیت، envelope رو میسازه و یه توکن کوتاهعمر به اپ میده؛ بعد اپ بهترتیب initialize()، loginWithAccessToken() و presentCaptiveSigning() رو صدا میزنه و از اونجا SDK کنترل صفحه رو دست میگیره. وقتی کاربر امضا کرد یا لغو کرد، promise با وضعیت نهایی برمیگرده — ولی مرجع واقعی همچنان وبهوک Connect سمت سروره.
await DocuSign.initialize({
integratorKey: 'YOUR_INTEGRATOR_KEY',
environment: 'demo',
});
const result = await DocuSign.presentCaptiveSigning({
envelopeId: session.envelopeId,
recipientClientUserId: session.recipientClientUserId,
});نکتهٔ مهم برای اپهای چندپلتفرمی اینه که هر دو سیستمعامل دقیقاً همون پیلود ۱۳ فیلدی رو مصرف میکنن، پس شاخهبندی جدا برای iOS و Android لازم نیست. در عوض جریان دوم یعنی presentCaptiveSigningWithUrl — که با یه لینک یکبارمصرف کار میکنه و توکن رو کلاً از موبایل بیرون نگه میداره — فقط روی iOS جواب میده و روی اندروید با خطای not_implemented رد میشه، چون SDK اندروید ۲.۱.۴ چنین ورودیای نداره.
SDKهای نیتیو داخل خود پکیج قرار نمیگیرن و موقع بیلد از CocoaPods و مخزن Maven دیتاساین گرفته میشن. یه دردسر شناختهشده هم حل شده: فایل AAR مربوط به sdk-pdf یه کلاس از پیش ساختهشدهٔ Glide داره که با کتابخونههای Glideمحور مثل expo-image موقع dex تداخل میکنه؛ کانفیگ پلاگین موقع expo prebuild همون AAR رو دانلود میکنه، هش SHA-256 پینشدهش رو چک میکنه، کلاس مزاحم رو حذف میکنه و نسخهٔ تمیز رو کنار پروژه میذاره.
از نظر پیشنیاز، حداقل iOS 15.1 و Android API 24 لازمه، بههمراه Expo SDK 55+ یا React Native 0.74+؛ معماری جدید پشتیبانی میشه ولی Expo Go جواب نمیده و باید development build بسازین. برای اجرای چند envelope پشتسرهم هم پروژه توصیه میکنه endSigningSession() رو صدا بزنین و reset() رو برای ریست کامل و بازیابی بعد از خطا نگه دارین.
نکات کلیدی:
- رَپر غیررسمی و MIT روی SDKهای رسمی موبایل DocuSign برای Expo و React Native
- امضای درونبرنامهای با رابط کاملاً نیتیو، بدون WebView و پل HTML
- یه پیلود ۱۳ فیلدی از بکاند، بدون شاخهبندی جدا برای iOS و Android
- جریان مبتنی بر URL فقط روی iOS؛ روی اندروید not_implemented برمیگردونه
- کانفیگ پلاگین تداخل کلاس Glide رو موقع expo prebuild با حذف کلاس از AAR حل میکنه
- حداقل iOS 15.1 و Android API 24؛ Expo Go پشتیبانی نمیشه




