پرش به مطلب اصلی

پیاده سازی یک برنامک

چگونه یک برنامک بنویسیم؟

راه اندازی برنامک

برای اتصال برنامک به کلاینت ایتا، اسکریپت eitaa-web-app.js را در تگ <head> و پیش از هر اسکریپت دیگری، با استفاده از کد زیر اضافه کنید:

<script src="https://developer.eitaa.com/eitaa-web-app.js"></script>

پس از اتصال اسکریپت یک شیء با نام window.Eitaa.WebApp با مقادیر زیر در دسترس قرار می‌گیرد:

مقدارنوعتوضیحات
initDataStringیک رشته از داده خام انتقال داده شده به برنامک که مناسب اعتبار سنجی داده است.
توجه: اعتبارسنجی داده حتما در سرور انجام شود!
initDataUnsafeWebAppInitDataیک شیء با داده‌های ورودی به برنامک منتقل شده است.
توجه: به داده‌های این فیلد نباید اعتماد کرد. شما فقط باید از داده‌های initData در سمت سرور و آن هم فقط پس از تأیید اعتبار استفاده کنید.
versionStringنسخه App API موجود در برنامه ایتای کاربر.
platformStringپلتفرم ایتای کاربر.
colorSchemeStringطرح رنگی که در حال حاضر در برنامه ایتا استفاده می‌شود.
یا "light" یا "dark". همچنین در CSS به عنوان متغیر var(--tg-color-scheme) موجود است.
themeParamsThemeParamsیک شیء حاوی تنظیمات قالب(تم) فعلی مورد استفاده در برنامه ایتا.
isExpandedBooleanاگر True باشد, برنامک به حداکثر ارتفاع موجود گسترش یافته است و اگر False باشد، برنامک فقط بخشی از صفحه را اشغال کند. با استفاده از متد ()expand می‌توان آن را تا تمام ارتفاع گسترش داد.
viewportHeightFloatارتفاع فعلی ناحیه قابل مشاهده برنامک.
همچنین در CSS به عنوان متغیر var(--tg-viewport-height) موجود است.

این برنامه می‌تواند فقط قسمت بالای برنامک را نمایش دهد و قسمت پایین آن در خارج از صفحه نمایش باقی بماند. از این موقعیت، کاربر می‌تواند برنامک را به حداکثر ارتفاع خود بکشد، در حالی که برنامک می‌تواند با فراخوانی متد ()expand همین کار را انجام دهد. با تغییر موقعیت برنامک، مقدار ارتفاع فعلی ناحیه قابل مشاهده به صورت بلادرنگ به‌روز می‌شود.

لطفاً توجه داشته باشید که نرخ تازه‌سازی این مقدار برای دنبال کردن هموار حاشیه پایین پنجره کافی نیست و نباید از آن برای پین کردن عناصر رابط به پایین ناحیه قابل مشاهده استفاده شود. برای این منظور، بهتر است از مقدار فیلد viewportStableHeight استفاده کنید.
viewportStableHeightFloatارتفاع ناحیه قابل مشاهده برنامک در آخرین وضعیت پایدار آن. همچنین در CSS به عنوان متغیر var(--tg-viewport-stable-height) موجود است.

این برنامه می‌تواند فقط قسمت بالای برنامک را نمایش دهد و قسمت پایین آن در خارج از صفحه نمایش باقی بماند. از این موقعیت، کاربر می‌تواند برنامک را به حداکثر ارتفاع خود بکشد، در حالی که برنامه می‌تواند با فراخوانی متد ()expand همین کار را انجام دهد. برخلاف مقدار viewportHeight، مقدار viewportStableHeight با تغییر موقعیت برنامک با حرکات کاربر یا در طول انیمیشن‌ها تغییر نمی‌کند. مقدار viewportStableHeight پس از تکمیل تمام حرکات و انیمیشن‌ها و رسیدن برنامک به اندازه نهایی خود به‌روز می‌شود.

به رویداد viewportChanged با پارامتر ورودی isStateStable=true توجه کنید که به شما امکان می‌دهد زمان تغییر وضعیت پایدار ارتفاع ناحیه قابل مشاهده را ردیابی کنید.
headerColorStringرنگ هِدر فعلی در قالب RRGGBB#.
backgroundColorStringرنگ پس زمینه فعلی در قالب RRGGBB#.
isClosingConfirmationEnabledBooleanاگر True باشد، هنگامی که کاربر در تلاش برای بستن برنامک است، سوال تایید نمایش داده میشود و اگر False باشد، برنامک بدون سوال بست میشود.
isVerticalSwipesEnabledBooleanاگر True باشد, تند کشیدن عمودی برای بستن یا کوچک کردن برنامک فعال است. و اگر False باشد, تند کشیدن عمودی برای بستن یا کوچک کردن برنامک غیرفعال است. در هر صورت، کاربر همچنان می‌تواند با کشیدن سربرگ برنامک، آن را کوچک کرده و ببندد.
BackButtonBackButtonیک شیء برای کنترل دکمه برگشت که در هدر برنامک در رابط کاربری ایتا قابل نمایش است.
MainButtonMainButtonیک شیء برای کنترل دکمه اصلی که در پایین برنامک در رابط کاربری ایتا نمایش داده می‌شود.
SettingsButtonSettingsButtonیک شیء برای کنترل آیتم تنظیمات در منو زمینه برنامک در رابط کاربری ایتا.
HapticFeedbackHapticFeedbackیک شیء برای کنترل بازخورد لمسی.
isVersionAtLatest(version)Functionاگر ورژن API برنامه ایتای کاربر مساوی یا بالاتر از نسخه ارسال شده به‌عنوان پارامتر باشد، True برمی‌گردد.
setHeaderColor(color)Functionروشی که رنگ هدر برنامه را در قالب RRGGBB# تنظیم می‌کند. همچنین می‌توانید از کلمات کلیدی bg_color و secondary_bg_color استفاده کنید.
setBackgroundColor(color)Functionروشی که رنگ پس‌زمینه برنامک را در قالب RRGGBB# تنظیم می‌کند. همچنین می توانید از کلمات کلیدی bg_color و secondary_bg_color استفاده کنید.
enableClosingConfirmation()Functionروشی که زمانی که کاربر در تلاش برای بستن برنامک است، دریافت تاییده برای بسته شدن را فعال می‌کند.
disableClosingConfirmation()Functionروشی که زمانی که کاربر در تلاش برای بستن برنامک است، دریافت تاییده برای بسته شدن را غیرفعال می‌کند.
enableVerticalSwipes()Functionروشی که تند کشیدن‌های عمودی را قادر می‌سازد تا برنامک را ببندند یا کوچک کنند. برای راحتی کاربر، توصیه می‌شود همیشه کشیدن انگشت‌ها را فعال کنید؛ مگر اینکه با حرکات برنامک مغایرت داشته باشند.
disableVerticalSwipes()Functionروشی که تند کشیدن‌های عمودی را برای بستن یا کوچک کردن برنامک غیرفعال می‌کند. این روش در صورتی مفید است که برنامک شما از حرکات سوایپ استفاده کند که ممکن است با حرکات برای کوچک کردن و بستن برنامه در تضاد باشد.
onEvent(eventType, eventHandler)Functionروشی که کنترل کننده رویداد برنامه را تنظیم می‌کند.
لیست رویدادهای موجود را بررسی کنید.
offEvent(eventType, eventHandler)Functionروشی که کنترل کننده رویداد از قبل تنظیم شده را حذف می‌کند.
openLink(url[, options])Functionروشی که پیوندی را در یک مرورگر خارجی باز می‌کند. با این کار، برنامک بسته نخواهد شد.

توجه داشته باشید که این روش فقط در پاسخ به تعامل کاربر با رابط برنامک (به عنوان مثال یک کلیک در داخل برنامک یا روی دکمه اصلی) قابل فراخوانی است.
openEitaaLink(url)Functionروشی که لینک ایتا را در داخل برنامه ایتا باز می‌کند. پس از فراخوانی این روش، برنامک بسته نخواهد شد.
showPopup(params[, callback])Functionروشی که یک پاپ آپ بومی را نشان می‌دهد که با آرگومان params از نوع PopupParams توصیف شده است.
هنگامی که پنجره بازشو بسته شود، برنامک رویداد popupClosed را دریافت می‌کند. اگر مقدار اختیاری callback پاس داده شود، آن تابع callback فراخوانی می‌شود و مقدار id دکمه فشرده شده به عنوان مقدار اول به تابع پاس داده می‌شود.
showAlert(message[, callback])Functionروشی که message را در یک هشدار ساده با دکمه "بستن" نشان می‌دهد. اگر یک پارامتر callback اختیاری ارسال شده باشد، با بسته شدن پنجره بازشو، تابع callback فراخوانی می‌شود.
showConfirm(message[, callback])Functionروشی که message را در یک پنجره تأیید ساده با دکمه های «OK» و «Cancel» نشان می‌دهد. اگر یک پارامتر callback اختیاری ارسال شده باشد، وقتی پنجره بازشو بسته شود، تابع callback فراخوانی می‌شود و اولین آرگومان یک بولین است که نشان می‌دهد آیا کاربر دکمه «OK» را فشار داده است یا خیر.
showScanQrPopup(params[, callback])Functionروشی که یک پنجره بومی برای اسکن یک کد QR را نشان می‌دهد که با آرگومان params از نوع ScanQrPopupParams توصیف شده است. برنامک رویداد qrTextReceived را هر بار که اسکنر کدی را با داده‌های متنی می‌خواند، دریافت می‌کند. اگر یک پارامتر callback اختیاری ارسال شده باشد، تابع callback فراخوانی می‌شود و متن کد QR به عنوان اولین آرگومان ارسال می‌شود. برگرداندن true در داخل این تابع callback باعث بسته شدن پنجره بازشو می‌شود.
closeScanQrPopup()Functionروشی که پنجره بومی را برای اسکن یک کد QR باز شده با روش showScanQrPopup می‌بندد. اگر داده‌های معتبری در رویداد qrTextReceived دریافت کرده‌اید، آن را اجرا کنید.
requestWriteAccess([callback])Functionروشی که یک پاپ آپ بومی را نشان می‌دهد که برای برنامک جهت ارسال پیام به کاربر درخواست مجوز می‌کند. اگر یک پارامتر callback اختیاری ارسال شده باشد، تابع callback زمانی که پنجره بازشو بسته شود فراخوانی می‌شود و اولین آرگومان، یک بولین است که نشان می‌دهد آیا کاربر این دسترسی را داده است یا خیر.
requestContact([callback])Functionروشی که یک پاپ آپ بومی را نشان می‌دهد که از کاربر شماره تلفن خود را درخواست می‌کند. اگر یک پارامتر callback اختیاری ارسال شده باشد، زمانی که پنجره بازشو بسته شود، تابع callback فراخوانی می‌شود و اولین آرگومان، یک بولین است که نشان می‌دهد کاربر شماره تلفن خود را به اشتراک گذاشته است یا خیر. دومین آرگومان، یک رشته از داده‌های تماس کاربر به همراه یک هش است که شما می‌توانید همانند initData از صحت آن مطمئن شوید.
ready()Functionروشی که به برنامه ایتا اطلاع می‌دهد که برنامک، آماده نمایش است.
توصیه می‌شود که این روش را در اسرع وقت و به محض بارگیری تمام عناصر واسط ضروری، فراخوانی کنید. پس از فراخوانی این روش، مکان‌نمای بارگذاری پنهان می‌شود و برنامک نمایش داده می‌شود.
اگر متد فراخوانی نشود، مکان نگهدار تنها زمانی پنهان می‌شود که صفحه به طور کامل بارگذاری شود.
expand()Functionروشی که برنامک را تا حداکثر ارتفاع موجود گسترش می‌دهد. برای اینکه متوجه شوید برنامک تا حداکثر ارتفاع گسترش یافته است یا خیر، به مقدار پارامتر Eitaa.WebApp.isExpanded مراجعه کنید.
close()Functionروشی که برنامک را می‌بندد.

ThemeParams

برنامک می‌تواند ظاهر رابط کاربری را طوری تنظیم کند که با اپلیکیشن کاربر ایتا در زمان واقعی مطابقت داشته باشد. این شیء شامل تنظیمات تم فعلی کاربر است:

مقدارنوعتوضیحات
bg_colorStringاختیاری. رنگ پس زمینه در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-bg-color) موجود است.
text_colorStringاختیاری. رنگ متن اصلی در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-text-color) موجود است.
hint_colorStringاختیاری. رنگ متن راهنما در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-hint-color) موجود است.
link_colorStringاختیاری. رنگ پیوند در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-link-color) موجود است.
button_colorStringاختیاری. رنگ دکمه در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-button-color) موجود است.
button_text_colorStringاختیاری. رنگ متن دکمه در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var (--tg-theme-button-text-color) موجود است.
secondary_bg_colorStringاختیاری. رنگ پس‌زمینه ثانویه در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-secondary-bg-color) موجود است.
header_bg_colorStringاختیاری. رنگ پس‌زمینه سرصفحه در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-header-bg-color) موجود است.
accent_text_colorStringاختیاری. رنگ متن در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-accent-text-color) موجود است.
section_bg_colorStringاختیاری. رنگ پس‌زمینه بخش در قالب RRGBBB#.
توصیه می‌شود از این به همراه secondary_bg_color استفاده کنید. همچنین در CSS به عنوان متغیر var(--tg-theme-section-bg-color) موجود است.
section_header_text_colorStringاختیاری. رنگ متن سرصفحه Bot API 7.0+ برای بخش در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var (--tg-theme-section-header-text-color) موجود است.
section_separator_colorStringاختیاری. رنگ جداکننده بخش Bot API 7.6+ در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-section-separator-color) موجود است.
subtitle_text_colorStringاختیاری Bot API 7.0+ رنگ متن زیرنویس در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var(--tg-theme-subtitle-text-color) موجود است.
destructive_text_colorStringاختیاری. Bot API 7.0+ رنگ متن برای اقدامات مخرب در قالب RRGBBB#.
همچنین در CSS به عنوان متغیر var (--tg-theme-destructive-text-color) موجود است.

themeParams

PopupParams

مقدارنوعتوضیحات
titleStringاختیاری. متنی که باید در عنوان پنجره نمایش داده شود، 0-64 کاراکتر.
messageStringپیامی که باید در بدنه پنجره نمایش داده شود، 1 تا 256 کاراکتر.
buttons[ ]PopupButtonاختیاری. لیست دکمه‌هایی که در پنجره بازشو نمایش داده می‌شوند، 1-3 دکمه. به طور پیش فرض روی [{"type":"close"}] تنظیم کنید.

ScanQrPopupParams

مقدارنوعتوضیحات
textStringاختیاری. متنی که باید تحت عنوان "اسکن QR" نمایش داده شود، 0-64 کاراکتر.

PopupButton

مقدارنوعتوضیحات
idStringاختیاری. شناسه دکمه، 0-64 کاراکتر. به طور پیش فرض روی رشته خالی تنظیم کنید.
اگر دکمه فشار داده شود، شناسه آن در callback و رویداد popupClosed برگردانده می‌شود.
typeStringاختیاری. نوع دکمه به طور پیش فرض روی default تنظیم می‌شود.
می‌تواند یکی از این مقادیر باشد:
- default، یک دکمه با سبک پیش‌فرض،
- ok، یک دکمه با متن محلی «تایید»،
- close، یک دکمه با متن محلی «بستن»،
- cancel، یک دکمه با متن محلی "لغو"،
- destructive، دکمه‌ای با سبکی که یک عمل مخرب را نشان می‌دهد (مانند "حذف"، "پاک کردن"، و غیره).
textStringاختیاری. متنی که روی دکمه نمایش داده می‌شود، 0-64 کاراکتر. اگر نوع پیش‌فرض یا مخرب باشد، ضروری است. برای انواع دیگر بی‌ربط است.

BackButton

مقدارنوعتوضیحات
isVisibleBooleanنشان می‌دهد که آیا دکمه قابل مشاهده است یا خیر. به طور پیش فرض روی false تنظیم کنید.
onClick(callback)Functionروشی که کنترل کننده رویداد فشار دکمه را تنظیم می‌کند. نام مستعار Eitaa.WebApp.onEvent ('backButtonClicked', callback)
offClick(callback)Functionروشی که کنترل کننده رویداد فشار دکمه را حذف می‌کند. نام مستعار Eitaa.WebApp.offEvent ('backButtonClicked', callback)
show()Functionروشی برای فعال و قابل مشاهده کردن دکمه.
hide()Functionروشی برای مخفی کردن دکمه.

MainButton

مقدارنوعتوضیحات
textStringمتن دکمه فعلی به طور پیش فرض روی CONTINUE تنظیم می‌شود.
colorStringرنگ دکمه فعلی به طور پیش فرض روی themeParams.button_color تنظیم می‌شود.
textColorStringرنگ متن دکمه فعلی. به طور پیش فرض روی themeParams.button_text_color تنظیم می‌شود.
isVisibleBooleanنشان می‌دهد که آیا دکمه قابل مشاهده است یا خیر. به طور پیش فرض روی false تنظیم می‌شود.
isActiveBooleanفعال بودن دکمه را نشان می‌دهد. به صورت پیش فرض روی true تنظیم می‌شود.
isProgressVisibleBooleanفقط خواندنی. نشان می‌دهد که آیا دکمه نشانگر بارگیری را نشان می‌دهد یا خیر.
setText(text)Functionروشی برای تنظیم متن دکمه.
onClick(callback)Functionروشی که کنترل کننده رویداد فشار دکمه را تنظیم می‌کند. نام مستعار Eitaa.WebApp.onEvent ("mainButtonClicked"، callback)
offClick(callback)Functionروشی که کنترل کننده رویداد فشار دکمه را حذف می‌کند. نام مستعار Eitaa.WebApp.offEvent ("mainButtonClicked"، callback)
show()Functionروشی برای نمایان کردن دکمه.
hide()Functionروشی برای پنهان کردن دکمه.
enable()Functionروشی برای فعال کردن دکمه.
disable()Functionروشی برای غیرفعال کردن دکمه.
showProgress(leaveActive)Functionروشی برای نشان دادن نشانگر بارگذاری روی دکمه.
توصیه می‌شود در صورتی که عملکرد مرتبط با دکمه ممکن است طولانی شود، پیشرفت بارگیری نمایش داده شود. به‌طور پیش‌فرض، دکمه در حین انجام عمل غیرفعال می‌شود. اگر پارامتر leaveActive=true پاس شود، دکمه فعال باقی می‌ماند.
hideProgress()Functionروشی برای پنهان کردن نشانگر بارگذاری.
setParams(params)Functionروشی برای تنظیم پارامترهای دکمه. پارامترها یک شیء حاوی یک یا چند فیلد است که باید تغییر کنند:
text - متن دکمه؛
color - رنگ دکمه؛
text_color - رنگ متن دکمه.
is_active - دکمه را فعال کنید.
is_visible - دکمه را نشان دهید.

همه این متدها شیء MainButton را برمی‌گردانند تا بتوان آن‌ها را زنجیره‌ای کرد.

SettingsButton

مقدارنوعتوضیحات
isVisibleBooleanنشان می‌دهد که آیا آیتم منوی زمینه قابل مشاهده است یا خیر. به طور پیش فرض روی false تنظیم می‌شود.
onClick(callback)Functionروشی که کنترل کننده رویداد مطبوعاتی را برای آیتم تنظیمات در منوی زمینه تنظیم می‌کند. نام مستعار ٍEitaa.WebApp.onEvent ('settingsButtonClicked', callback)
offClick(callback)Functionروشی که کنترل کننده رویداد مطبوعاتی را از آیتم تنظیمات در منوی زمینه حذف می‌کند. نام مستعار Eitaa.WebApp.offEvent ('settingsButtonClicked', callback)
show()Functionروشی برای قابل مشاهده کردن مورد تنظیمات در منوی زمینه.
hide()Functionروشی برای پنهان کردن مورد تنظیمات در منوی زمینه.

HapticFeedBack

مقدارنوعتوضیحات
impactOccurred(style)Functionیک روش می‌گوید که یک ضربه رخ داده است. برنامه ایتا ممکن است بر اساس مقدار سبک ارسال شده، هاپتیک(واکنش لمسی) مناسب را پخش کند. سبک می‌تواند یکی از این مقادیر باشد:
- light، نشان دهنده برخورد بین اشیاء رابط کاربری کوچک یا سبک وزن است،
- medium، نشان دهنده برخورد بین اشیاء UI با اندازه متوسط ​​یا وزن متوسط ​​است،
- heavy، نشان دهنده برخورد بین اشیاء رابط کاربری بزرگ یا سنگین وزن است،
- rigid، نشان دهنده برخورد بین اشیاء رابط کاربری سخت یا غیر قابل انعطاف است،
- soft، نشان دهنده برخورد بین اشیاء رابط کاربری نرم یا انعطاف پذیر است.
notificationOccurred(type)Functionیک روش می‌گوید که یک کار یا عمل موفق، شکست خورده است، یا یک هشدار ایجاد کرده است. برنامه ایتا ممکن است بر اساس نوع مقدار ارسال شده، هاپتیک(واکنش لمسی) مناسب را پخش کند. نوع می‌تواند یکی از این مقادیر باشد:
- error، نشان می‌دهد که یک کار یا عمل شکست خورده است،
- success، نشان می‌دهد که یک کار یا عمل با موفقیت انجام شده است،
- warning، نشان می‌دهد که یک کار یا عمل یک هشدار ایجاد کرده است.
()selectionChangedFunctionیک روش می‌گوید که کاربر یک انتخاب را تغییر داده است. برنامه ایتا ممکن است هاپتیک(واکنش لمسی) مناسب را پخش کند.

هنگامی که کاربر انتخابی را انجام می‌دهد یا تأیید می‌کند، از این بازخورد استفاده نکنید. فقط زمانی از آن استفاده کنید که انتخاب تغییر کند.

WebAppInitData

مقدارنوعتوضیحات
query_idStringاختیاری. یک شناسه منحصر به فرد برای جلسه برنامک
userWebAppUserاختیاری. یک شیء حاوی داده‌های مربوط به کاربر فعلی.
chat_typeStringاختیاری. نوع گفتگویی که برنامک از آن باز شده است. می‌تواند "private"، "group" یا "channelOrSupergroup" باشد. فقط برای برنامک‌های راه اندازی شده از پیوندهای مستقیم بازگردانده می‌شود.
chat_instanceStringاختیاری. یک شناسه یکتا که نشان‌دهنده گفتگویی است که برنامک از آن باز شده است. فقط برای برنامه‌هایی که با لینک مستقیم باز شده‌اند بازگردانده می‌شود.
start_paramStringاختیاری. مقدار پارامتر start_param نیز در پارامتر GET tgWebAppStartParam ارسال می‌شود، بنابراین برنامک می‌تواند فوراً رابط صحیح را بارگیری کند.
auth_dateIntegerیونیکس تایم زمانی که فرم باز شد.
device_idStringیک شناسه یکتا که مشخص می‌کند کاربر از چه دستگاهی و با چه حساب ایتایی وارد برنامک شده است.
hashStringیک هش از تمام پارامترهای ارسال شده که سرور برنامه می‌تواند از آن برای بررسی اعتبار آن‌ها استفاده کند.

WebAppUser

مقدارنوعتوضیحات
idIntegerیک شناسه منحصر به فرد برای کاربر یا برنامه. این عدد ممکن است بیش از 32 بیت مهم داشته باشد و برخی از زبان‌های برنامه نویسی ممکن است در تفسیر آن مشکل/نقص بی‌صدا داشته باشند. حداکثر 52 بیت مهم دارد، بنابراین یک عدد صحیح 64 بیتی یا یک نوع double-precision float برای ذخیره این شناسه امن است.
first_nameStringنام کاربر
last_nameStringاختیاری. نام خانوادگی کاربر
language_codeStringاختیاری. برچسب زبان IETF زبان کاربر. فقط در قسمت user برمی گردد.
allows_write_to_pmTrueاختیاری. True، اگر این کاربر به برنامه اجازه داده باشد که برنامه به او پیام دهد.