سلام دوستان وقت بخیر
همانطور که میدونید بعضی از برنامه ها تو اندروید هستن که این امکان رو به شما میدن که از یک برنامه چند نسخه روی گوشی شما نصب بشه که معمول ترین استفاده ش برای واتساپ هست، چون واتساپ رو نمیتونین چند تا اکانت رو با هم داشته باشین میان رو این برنامه چند نسخه واتساپ نصب میکنن و کارشون راه میافته. اینجوری شما میتونین چند نسخه از واتساپ رو به صورت موازی داشته باشین.
این برنامه یکی از نمونه هایی هست که این امکان نصب موازی رو میده :
لینک پلی استور
حالا ما میخوایم جلوی این موضوع رو بگیریم یعنی بفهمیم که برنامه مون داره روی این تیپ برنامه ها به صورت موازی نصب میشه
نظرتون چیست؟
ممنون روز خوش
شما اول باید ببینید که این برنامه ها چطور کار می کنن.
1- بعضی از این ها اسم پکیج رو عوض می کنن و سیستم عامل موقع نصب برنامه رو به عنوان پکیج میشناسه.
2- بعضی از برنامه ها یا حتی بعضی از توزیع های اندروید مثل miui برای برنامه هایی که کاربر میخواد چند تا داشته باشه environment جدید ایجاد می کنن.
3- روی سیستم عامل اندروید امکان ایجاد چند یوزر وجود داره. فقط بعضی از برند ها این قابلیت سیستم عامل رو از دسترس کاربر مخفی کردن و بعضی ها نکردن. که اینجوری هم باز کاربر میتونه چند یوزر ایجاد کنه و اپ شما رو توی هر کدوم نصب کنه.
برای مورد اول شما میتونید کاری کنید که برنامه موقع اجرا شدن اسم پکیج رو چک کنه و اگه تغییر کرده باشه یا اجرا نشه یا به شما خبر بده. ولی این باز به قدرت نرم افزار کپی کننده یا مهارت کسی که اسم پکیج رو تغییر میده بستگی داره، اگه بتونه اسم پکیج رو در همه کلاس های برنامه شما تغییر بده باز شما نمیتونید کاری کنید. مگه این که شما هر دفعه اسم پکیج رو برای چک کردن از سرور بگیرید یا این که از native method برای این کار استفاده کنید (چون ایجاد تغییر در فایل ها so کار هرکسی نیست).
برای مورد دوم و سوم هم نمیتونید کاری کنید. مگه این که داخل برنامتون از shared memory استفاده کنید (اطلاع ندرم که react بتونه به shared memory دسترسی داشته باشه یا نه) و این روش همه سیستم عامل ها جواب میده، نمیتونه جلوی چند بار نصب شدن یا کلون شدن رو بگیره ولی جلوی اجرای تکراری رو میگیره، یعنی اگه طرف 20 بار هم برنامه شما رو کلون کنه فقط یک بار می تونه اجرا کنه.
راه دیگه ای هم هست که شما با توجه به vendor id یا imei هر دستگاه فقط امکان اتصال یک برنامه از یک دستگاه رو به سرور بدید.
درکل vendor id مشکلات خودش رو هم داره ولی فکر می کنم برای شما دم دست ترین حالت باشه. imei هم که برای دستگاه هایی که سیمکارت نمی خورن کاربرد نداره و حتی ممکنه مارکت ها به پرمیشن خوندن imei ایراد بگیرن.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟