PDA

View Full Version : استفاده از API Parse.com به صورت سفارشی



slr560
دوشنبه 15 تیر 1394, 12:43 عصر
سلام دوستان
من دارم سیستم نوتیفکیشن parse رو پیاده سازی میکنم. توی این شخصی سازی نیاز هست که از وبسرویس REST پارس استفاده کنم
سمت موبایل باید نوتیفیکیشن ها براساس شهر و جنسیت تفکیک بشن.
روند کار به این شکل هست که مثلا یه بنده خدایی (خانم) از موبایلش یه درخواست میفرسته و به وبسرویس REST ارسال میشه . حالا تمام خانم هایی که توی اون شهر هستن همون لحظه نوتیفیکشن رو دریافت میکنن
پیاده سازی اولیه Parse رو توی برنامه انجام دادم . مونده فقط چجوری شرط شهر و جنسیت رو توی برنامه اعمال کنم و بعدش بتونم درخواستمو به REST ارسال کنم
ممنون میشم راهنمایی کنین

slr560
دوشنبه 15 تیر 1394, 14:46 عصر
کسی نیست آیا؟

Nevercom
دوشنبه 15 تیر 1394, 23:09 عصر
چندین راه برای چیزی که نیاز داری وجود داره.

در کل شما هنگام ثبت هر دستگاه میتونی یه سری پارامترها رو هم براش مشخص کنی، مثلاً هنگام رجیستر کردن دستگاه پارامترهای جنسیت و شهر رو هم به اون دستگاه نسبت میدی، حالا هر دستگاه که ثبت شده این مشخصه ها رو هم داره که میشه از هم تفکیکشون کرد، کوئری زد و...

یکی از راه ها اینه که امکان ارسال پوش از سمت کلاینت رو فعال کنی، مثلاً یک خانم از شیراز موضوعی ارسال می کنه و شما از رو همون دستگاه پوش رو ارسال می کنی و مشخص می کنی به دستگاه هایی ارسال بشه که پارامتر جنس رو خانم انتخاب کردن و شهر رو شیراز.

برای اینکار هم پارس متدهایی برای کوئری زدن داره، مثلاً ()ParsInstallation.getQuery

اما اینکار خطر هایی داره، درواقع هرکی میتونه از سیستم شما سوء استفاده کنه و با داشتن API KEY برای کاربر هات پوش بفرسته

راه حل دیگه اینه که درخواست ارسال پوش رو به سرور خودت بفرستی و از اونجا باز کوئری بزنی و پوش رو ارسال کنی.

راه حل دیگه هم این هست که بجای ارسال داده به سرور خودت، از Cloud پارس استفاده کنی و این قسمت از کد رو به سرور پارس منتقل کنی، یعنی دستگاه درخواست رو به سرور پارس و Cloud Code ارسال می کنه و اونجا با متدهایی که داری پردازش می کنی و پوش رو ارسال می کنی.


مهم اینه که به هر دستگاه پارامترهایی رو نسبت بدی که بتونی از هم تفکیکشون کنی

slr560
دوشنبه 15 تیر 1394, 23:17 عصر
چندین راه برای چیزی که نیاز داری وجود داره.

در کل شما هنگام ثبت هر دستگاه میتونی یه سری پارامترها رو هم براش مشخص کنی، مثلاً هنگام رجیستر کردن دستگاه پارامترهای جنسیت و شهر رو هم به اون دستگاه نسبت میدی، حالا هر دستگاه که ثبت شده این مشخصه ها رو هم داره که میشه از هم تفکیکشون کرد، کوئری زد و...

یکی از راه ها اینه که امکان ارسال پوش از سمت کلاینت رو فعال کنی، مثلاً یک خانم از شیراز موضوعی ارسال می کنه و شما از رو همون دستگاه پوش رو ارسال می کنی و مشخص می کنی به دستگاه هایی ارسال بشه که پارامتر جنس رو خانم انتخاب کردن و شهر رو شیراز.

برای اینکار هم پارس متدهایی برای کوئری زدن داره، مثلاً ()ParsInstallation.getQuery

اما اینکار خطر هایی داره، درواقع هرکی میتونه از سیستم شما سوء استفاده کنه و با داشتن API KEY برای کاربر هات پوش بفرسته

راه حل دیگه اینه که درخواست ارسال پوش رو به سرور خودت بفرستی و از اونجا باز کوئری بزنی و پوش رو ارسال کنی.

راه حل دیگه هم این هست که بجای ارسال داده به سرور خودت، از Cloud پارس استفاده کنی و این قسمت از کد رو به سرور پارس منتقل کنی، یعنی دستگاه درخواست رو به سرور پارس و Cloud Code ارسال می کنه و اونجا با متدهایی که داری پردازش می کنی و پوش رو ارسال می کنی.


مهم اینه که به هر دستگاه پارامترهایی رو نسبت بدی که بتونی از هم تفکیکشون کنی

با این حساب کلاد جالبتر به نظر میرسه.
میشه لطف کنی یه توضیح بدی که من چجوری میتونم سمت گوشی این پارامتر ها رو سفارشی کنم؟ البته توضیح دادی ولی کمی جامع تر. مثلا توی کدوم کلا این کوئری ها نوشته بشه

و دوم اینکه وقتی از کلاد استفاده باید خودم کدهاشو بنویسم. میشه تو کلاد c# نوشت؟
میشه توضیح جامع تری از کلاد ارائه بدی؟ ممنون

راستی خودم یه سرور اختصاصی هم دارم. واسه راحتی کار نمیشه ازش استفاده کرد؟

Nevercom
سه شنبه 16 تیر 1394, 00:12 صبح
اینجا توضیحاتی دادم: ایجاد وب سرویس شخصی مانند پارسه (http://barnamenevis.org/showthread.php?499508-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D8%B4%D8%AE%D8%B5%DB%8C-%D9%85%D8%A7%D9%86%D9%86%D8%AF-%D9%BE%D8%A7%D8%B1%D8%B3%D9%87)

پارس این امکان رو بهت میده که کل Backend رو بیاری روی سرور پارس، زبان برنامه نویسی هم جاوا اسکریپت هست.

میتونی از سرور خودت هم استفاده کنی، برای تعامل با سرور پارس هم REST API در دسترس هست و هم SDK برای زبان های محتلف

slr560
سه شنبه 16 تیر 1394, 00:23 صبح
فکر کنم این راه حل بهتر باشه
فیلتری که میخوام ایجاد بشه رو با Json میفرستم به سرور خودم و اونجا با استفاده از REST پارس میام واسه گوشی های فیلتر شده نوتیفیکیشن میفرستم
مشکل اینجاس من استفاده از REST پارس رو نفهمیدم . همه مثالاش یا با PHP هست یا Python
فعلا من C# بلدم . اگه مثال کاملی بهم نشون بدید ممنونت میشم

Nevercom
سه شنبه 16 تیر 1394, 01:13 صبح
این لیست کتابخانه هایی هست که برای زبان های مختلف ایجاد شدن (https://www.parse.com/docs/api_libraries)، فوقش هم کتابخانه ی مناسب نبود، از همون REST API (https://www.parse.com/docs/rest/guide) استفاده کن که کاری به زبان برنامه نویسی هم نداره

slr560
سه شنبه 16 تیر 1394, 20:46 عصر
متاسفانه بار سرور خودم خیلی زیاد میشه وقتی توی C#‎‎‎‎‎‎ نوتیفیکیشن ارسال میکنم
برنامه رو جوری نوشتم که از خود اندروید کوئری ارسال کنه . حالا یه مشکلی هست . مقدار ObjectId که یک مقدار منحصر به فرد هست با هر نصب دوباره برنامه مقدار جدید میگیره و یک سطر دیوایس به پارس اضافه میکنه
مشکل اینجاس یارو شاید ۱۰ بار برنامه رو پاک کنه و دوباره نصب کنه . اونوقت توی پارس ۱۰ تا دیوایس ثبت میشه . چطوری میشه اینو چک کرد که دیگه دستگاه تکراری ثبت نکنه؟؟؟

Nevercom
سه شنبه 16 تیر 1394, 21:51 عصر
بنظر من منطقی تره این بار رو ببری رو سرور پارس، به هرحال امکاناتی هست که رایگان بهت داده.

این موردی که میگی تو دنیای واقعی کمتر اتفاق می افته، برای شما که توسعه دهنده هستی آره، اما کاربر نهایی منطقاً نباید چندین و چند بار برنامه رو حذف کنه و دوباره نصب کنه، یعنی تعدادش خیلی کمه.

به هرحال این رو نمیشه کاریش کرد، مگر اینکه خود پارس مکانیزمی براش فراهم کنه.

slr560
سه شنبه 16 تیر 1394, 22:18 عصر
بنظر من منطقی تره این بار رو ببری رو سرور پارس، به هرحال امکاناتی هست که رایگان بهت داده.

این موردی که میگی تو دنیای واقعی کمتر اتفاق می افته، برای شما که توسعه دهنده هستی آره، اما کاربر نهایی منطقاً نباید چندین و چند بار برنامه رو حذف کنه و دوباره نصب کنه، یعنی تعدادش خیلی کمه.

به هرحال این رو نمیشه کاریش کرد، مگر اینکه خود پارس مکانیزمی براش فراهم کنه.


رایگان که داده ولی کدنویسی داره که فعلا حال یادگیریشو ندارم . دارم کوئری رو توی خود اندروید میسازم و میفرستم .
تنها موردی که هست اینه که باید Client Push Enable رو فعال کنی و این یعنی اینکه از هر سیستمی میشه پوش رو فرستاد
البته در صورتی که Application Id رو داشته باشی

میدونم چیکار کنم که Application Id رو مخفی کنم . به جز این مشکلی دیگه نیس؟

Nevercom
سه شنبه 16 تیر 1394, 23:26 عصر
اون
Client Push Enable یه خطر خیلی بزرگه، اینکار رو تو برنامه ها فعال نکن، کدهای ارسال پوش حتماً باید تو سرور باشه. چون اطلاعات تو برنامه ی اندرویدی حتماً قابل دیدن هست.
اگه لو بره یعنی هرکی میتونه به کاربرهات نوتیفیکیشن بده

Nevercom
سه شنبه 16 تیر 1394, 23:28 عصر
اینو بخون: http://blog.parse.com/learn/engineering/the-dangerous-world-of-client-push/

slr560
سه شنبه 16 تیر 1394, 23:35 عصر
اینو بخون: http://blog.parse.com/learn/engineering/the-dangerous-world-of-client-push/
دیدمش
چی باعث میشه این کار خطرناک باشه؟ مشکل لو رفتن Application Id هست دیگه درسته؟

Nevercom
سه شنبه 16 تیر 1394, 23:50 عصر
خب برای استفاده از SDK به دو کلید که در initialize وارد می کنید نیاز دارید. درحالت عادی خطر زیادی نداره اگه بهش دسترسی پیدا کنن. اما اگه ارسال پوش فعال باشه، یعنی هرکی این دوتا کلید رو داشته باشه میتونه پوش بفرسته.

مگه اینکه مطمئن باشید این دوتا کلید خوب تو برنامه مخفی شدن و در دسترس نیستن

slr560
سه شنبه 16 تیر 1394, 23:59 عصر
خب برای استفاده از SDK به دو کلید که در initialize وارد می کنید نیاز دارید. درحالت عادی خطر زیادی نداره اگه بهش دسترسی پیدا کنن. اما اگه ارسال پوش فعال باشه، یعنی هرکی این دوتا کلید رو داشته باشه میتونه پوش بفرسته.

مگه اینکه مطمئن باشید این دوتا کلید خوب تو برنامه مخفی شدن و در دسترس نیستن


آره به یه روش انقلابی مخفیش میکنم :لبخند:
مگه اینکه طرف دسترسی مستقیم به RAM داشته باشه و بتونه اونجارو بخونه . :چشمک:

Nevercom
چهارشنبه 17 تیر 1394, 00:20 صبح
اتفاقن من مدتی هست که در وقت آزادم روی یه آموزش دیگه با پارس کار می کنم که از خیلی دیگه از قابلیت های دیگه ی Parse مثل ClientPush و LocalDataStore و همین Cloud Code استفاده می کنه. امیدوارم فرصت پیدا کنم و بتونم زودتر تمومش کنم

slr560
چهارشنبه 17 تیر 1394, 00:24 صبح
اتفاقن من مدتی هست که در وقت آزادم روی یه آموزش دیگه با پارس کار می کنم که از خیلی دیگه از قابلیت های دیگه ی Parse مثل ClientPush و LocalDataStore و همین Cloud Code استفاده می کنه. امیدوارم فرصت پیدا کنم و بتونم زودتر تمومش کنم

واقعا ممنونت میشم اگه این کارو بکنی. خیلی نیازه
منتظر آموزشت هستیم. اگه بتونی به صورت کلیپ درست کنی عالی میشه
مثلا یه ویدیو ۱ ساعته. مث همونی که من واسه اندروید استادیو درست کردم. اینجوری هم راحتری و هم اطلاعات بیشتری انتقال میدی
بازم تشکر

slr560
چهارشنبه 17 تیر 1394, 17:48 عصر
یه مشکلی هست. این پارس انگار بعضی وقتا قاط میزنه
من موقع رجیستر کردن دیوایس یه سری مشخصاتم بهش اضافه میکنم
حالا توی کوئری که میفرستم با توجه به همون مشخصات یه سری کوئری هم واسه فیلتر کردن میفرستم
بعضی وقتا نوتیفیکیشن میاد و بعضی وقتا هم نه :|

Nevercom
پنج شنبه 18 تیر 1394, 00:22 صبح
ببین تو هر درخواست پاسخ درست رو دریافت می کنی و اینکه یه کوئری با فرض ثابت موندن دیتا، هربار همون خروجی رو میده ؟

slr560
پنج شنبه 18 تیر 1394, 00:39 صبح
ببین تو هر درخواست پاسخ درست رو دریافت می کنی و اینکه یه کوئری با فرض ثابت موندن دیتا، هربار همون خروجی رو میده ؟

قبلا یه شماره برای هر فرد در نظر گرفته بودم که میومدم با اون بعضی قسمت هارو فیلتر میکردم
حالا اومدم از objectId استفاده کردم و ظاهرا اوکی شد.
باید یه ۵ تا امولاتور run کنم و تست کنم

slr560
پنج شنبه 18 تیر 1394, 20:32 عصر
من تازه دوهزاریم افتاده که اصن این Parse چیه. فوق العادس . :تشویق:
اصن کاری به نوتیفیکسشن ندارم . بحث استفاده از دیتابیسش یه دنیاست . بعد از github این باحال ترین اتفاقی بود که توی زندگی برنامه نویسیه من افتاد
توی دیتابیس محدودیتی چیزی نداره؟ یا محدودیتش تا چه حد هست؟

Nevercom
جمعه 19 تیر 1394, 04:44 صبح
دیتابیس محدودیت حجمی ۲۰ گیگابایت داره.
ضمن اینکه محدودیت ۳۰ درخواست بر ثانیه بصورت کلی وجود داره، هر کوئری که می زنید، هرثبت نامه که انجام میشه و خلاصه هزچیزی که از سمت دستگاه به سرور پارس ارسال بشه یک درخواست محسوب میشه، و ایندرخواست ها از مرز ۳۰ درخواست بر ثانیه نباید تجاوز کنه