آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ایجاد یک بستر برای ارتباط کاربرها از طریق سرور

peymancrane  12 سال پیش  12 سال پیش
0 0

سلام استاد عزیز
بعد یک هفته بالاخره از پسش براومدم.همون راهنمایی که کردین باعث شد تا بالاخره با استفاده از life cycle و table جدید و گرفتن IMEI حلش کنم. حالا رسیدم به غول مرحله بعد :)
میخام کاربرها مثل نرم افزارهای چت مثل wechat بتونن همدیگرو add کنن و به هم پیغام بدن البته میخام این اطلاعات تو سرور ذخیره بشه که کاربر با هر دیوایسی کانکت شد فرندها و پیغاماشو داشته باشه,تو اینترنت چیز خاصی پیدا نکردم.
یه راهنمایی کنین تمام سعیمو میکنم که مجبور به سوال نشم.

مشكل من الان اينه كه ميخام داخل برنامم يه چيزى شبيه به نرم افزارهاى چت مثل whatsapp يا viber يا wechat داشته باشم،يعنى كاربرها بتونن به عنوان friend همديگرو add كنن و بتونن به هم پيغام خصوصى بدن،البته فقط پيغام كفايت ميكنه،دنبال تماس تصويرى و غيره نيستم.

مشكل اول اينه كه الان يه list view نوشتم كه با توجه به چيزى كه كاربر تو edit text وارد ميكنه ديتا بيس رو ميگرده و كاربرهاى ديگه رو ليست ميكنه،مثلا مينويسه پيمان،هر كسى با اسم پيمان باشه توى list view نشون داده ميشه،حالا ميخام با انتخاب يكى نفر از تو ليست و زدن دكمه add تعبيه شده،يه پيغام واسه اون طرف فرستاده بشه كه فلانى براى شما درخواست دوستى فرستاده.

مشكل دوم اينه كه بعد از اينكه اون پيغام از طرف كاربر accept شد اين دو كاربر چجورى ميتونن با هم چت كنن،البته مهم اينه كه پيغامهاى رد و بدل شده بينشون يه جا ذخيره بشه.

البته يه source code پيدا كردم كه يه table واسه friendها ساخته و يه table واسه message ها،ولى كدش زياد جالب نيس و البته نميتونه پيغام دوستى push notification بفرسته.
پیشاپیش ممنونم.

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
uncocoder  12 سال پیش
0 0

مطمئناً در این شرایط IMEI نمی تونه مشکل رو حل کنه چون قضیه سر « هر Device ـی » هست. شما باید بر اساس Username ـی که کاربرتون Connect شده اطلاعات رو دربیارید و روی گوشی بهش نشون دید. تا اینجاش چیز عجیبی به نظر نمیاد و الان دقیقاً نمی دونم کجای کار گیر کردید.

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

حالا سرور چجوری می فهمه پیام داره شخص یا نداره، خیلی ساده میاد داخل تیبل پیام ها ، جستجو می کنه اونهایی رو که برای user_pid خاصی ارسال شده و مقدار pending ( یک فیلد دلخواه ) آن 1 است که وقتی ارسال میشه به گوشی کاربر مقدار این فیلد میشه 0 ( توسط سرور ).

حالا چجوری میشه پیغام گذاشت، خیلی ساده یک رکورد جدید با pending = 1 با فیلد user_pid = و دارنده محتوای پیام ثبت میشه.

اگر نیاز به روش بدون تعلل و بصورت سرویسی داشته باشید، روش socket programming یا push notification هر دو کارآمد هستند اما socket programming نیاز به برنامه نویسی حرفه ای داره و push notification به علت مسائل تحریم برای ما دچار مشکلاتی است.

0 0
ممنون بابت جوابتون,منم طبق همون روش اولی که گفتین دارم مینویسم ولی به نظرم خیلی قشنگ نیست. حالا همینو ادامه میدم تا بعد که socket رو یاد بگیرم,البته یه نمونه کد از socket دارم ولی push نداره و چون ازش سر در نیاوردم ازش استفاده نکردم. (12 سال پیش)
0 0
متأسفانه با توجه به شرایط ایران، راه حل اصلی که Push Notification هست جواب مناسبی نمی دهد و در این مورد از استاندارد بین المللی مجبوریم دور رفتار کنیم. (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .