با سلام و سپاس خدمت کاربران عزیز سایت یاهو ۹۸ YAHOO
این بار با یک آموزش تحت عنوان “ساخت اپلیکیشن هواشناسی” در خدمت تون هستم.
در این آموزش از api سایت پارسی جو استفاده می کنیم.
api چیست؟
api که مخفف عبارت Application Programming Interface هست، یک راه ارتباطی بین سرویس هاست. درواقع از قبل متخصصان یک سرویسی رو آماده کردند که معمولا از لحاظ فنی از پیچیدگی هایی هم برخوردار هست. الان ما در این آموزش از api سایت پارسی جو استفاده می کنیم. ما به این api نام شهر رو میفرستیم و اون در پاسخ برای ما وضعیت آب و هوای اون شهر رو در قالب xml برمیگردونه.
برای ارسال درخواست به api هواشناسی پارسی جو نیازی به ثبت نام نیست و همچنین کاملا رایگان هست.
فرم کلی لینک ریکوئست به شکل زیر است:
https://parsijoo.ir/api?serviceType=weather-API&q=نام شهر
به عنوان مثال الان لینک زیر رو در مروگر خودتون وارد کنید:
https://parsijoo.ir/api?serviceType=weather-API&q=شاهین دژ
همانطور که دیدین api در پاسخ وضعیت هوای شهرستان شاهین دژ رو تا هفت روز آینده در قالب XML برگردوند. به شکل زیر:
<main> <sadana-services> <weather-service> <day> <day-name> <![CDATA[ امروز ]]> </day-name> <status> <![CDATA[ آرام ]]> </status> <symbol> <![CDATA[ 1 ]]> </symbol> <temp> <![CDATA[ ۳۰ ]]> </temp> <city-name> <![CDATA[ شاهین دژ ]]> </city-name> <max-temp> <![CDATA[ ۴۶ ]]> </max-temp> <min-temp> <![CDATA[ ۱۸ ]]> </min-temp> </day> <day> <day-name> <![CDATA[ فردا ]]> </day-name> <max-temp> <![CDATA[ ۳۲ ]]> </max-temp> <min-temp> <![CDATA[ ۱۹ ]]> </min-temp> <symbol> <![CDATA[ 2 ]]> </symbol> </day> <day> <day-name> <![CDATA[ دوشنبه ]]> </day-name> <max-temp> <![CDATA[ ۳۳ ]]> </max-temp> <min-temp> <![CDATA[ ۲۱ ]]> </min-temp> <symbol> <![CDATA[ 2 ]]> </symbol> </day> <day> <day-name> <![CDATA[ سه شنبه ]]> </day-name> <max-temp> <![CDATA[ ۳۵ ]]> </max-temp> <min-temp> <![CDATA[ ۲۲ ]]> </min-temp> <symbol> <![CDATA[ 1 ]]> </symbol> </day> <day> <day-name> <![CDATA[ چهارشنبه ]]> </day-name> <max-temp> <![CDATA[ ۳۶ ]]> </max-temp> <min-temp> <![CDATA[ ۲۱ ]]> </min-temp> <symbol> <![CDATA[ 1 ]]> </symbol> </day> <day> <day-name> <![CDATA[ پنج شنبه ]]> </day-name> <max-temp> <![CDATA[ ۳۵ ]]> </max-temp> <min-temp> <![CDATA[ ۱۹ ]]> </min-temp> <symbol> <![CDATA[ 1 ]]> </symbol> </day> <day> <day-name> <![CDATA[ آدینه ]]> </day-name> <max-temp> <![CDATA[ ۳۶ ]]> </max-temp> <min-temp> <![CDATA[ ۲۱ ]]> </min-temp> <symbol> <![CDATA[ 1 ]]> </symbol> </day> </weather-service> </sadana-services> </main>
به توضیحات زیر درباره داده ها دقت کنید:
day : day-name : نام روز status : وضعیت هوا temp : دمای کنونی بر حسب سانتیگراد city-name : نام شهری که در درخواست فرستاده بودید max-temp : حداکثر دما در همین روز min-temp : حداقل دما در همین روز symbol : معمولا بین ۱ تا ۱۲ است و اگر این عدد را در لینک زیر قرار دهید لوگوی وضعیت جوی در دسترس تون قرار میگیرد http://cdn.parsijoo.ir/static/home/source/cdn/images/services/weather/symbol.png مثلا: http://cdn.parsijoo.ir/static/home/source/cdn/images/services/weather/1.png http://cdn.parsijoo.ir/static/home/source/cdn/images/services/weather/2.png http://cdn.parsijoo.ir/static/home/source/cdn/images/services/weather/3.png
تا الان هرچی گفتیم مربوط به api بوده تا شما یه آشنایی باهاش پیدا کنید و اصلا بدونید که api چی هست.
حالا B4A رو باز می کنیم و یک پروژه جدید ایجاد می کنیم.
به دیزاینر میریم و یک ادیت تکست و یک دکمه به ترتیب با نام های Edittext1 و Button1 میسازیم و اون ها رو generate می کنیم.
تیک کتابخونه HttpUtils2 رو میزنیم(شما میتونید از کتابخونه های دیگه هم برای ارتباط با api استفاده کنید ولی چون این کتابخونه به صورت رایگان تو دسترس همه هست من در این آموزش از این استفاده می کنم)
تیک کتابخونه XmlSax رو هم میزنیم، از این کتابخونه برای تجزیه داده های با فرمت XML استفاده میشه.
sub Button1_Click GetWeather.Initialize("Get_Weather",Me) GetWeather.Download( "https://parsijoo.ir/api?serviceType=weather-API&q="&Edittext1.text) Wait For JobDone(job As HttpJob) If job.Success=True Then Private parser As SaxParser parser.Initialize parser.Parse(job.GetInputStream,"parser") Else ToastMessageShow("اتصال اینترنت وجود ندارد",False) Activity.Finish Return End If EndSub
حالا به شکل بالا در رویداد کلیک دکمه به api هواشناسی پارسی جو ریکوئست میزنیم. اون پارامتری که باید نام شهررو وارد می کردیم از Edittext میگیریم. یعنی کاربر باید نام شهرش رو توی ادیت تکست وارد کنه. حتما قبل از ارسال ریکوئست خالی نبودن ادیت تکست و یک سری چیزهای دیگررو چک کنید. شما میتونید توی دوتا spinner کل استان ها و کل شهرهای ایران رو نمایش بدین تا کاربر از اونا انتخاب کنه.(برای این کار سورس اذانگو رو که توی همین انجمن گذاشتم مطالعه کنید. چون توی اون سورس اومدیم و کل استان ها و شهرهای ایران رو توی دوتا spinner نمایش دادیم.)
گفتیم وقتی که داده های XML دانلود شدند با کتابخونه XmlSax تجزیه بشوند. که متد parse این کتابخونه دوتا ورودی داره. اولی باید داده های Xml رو به شکل InputStram بهش بدیم و پارامتر دوم هم یک EventName هست.
بعد از فراخوانی متد parse نتیجه به تابع EventName_EndElement برگردونده میشه که برای ما parser_EndElement میشه.
Sub parser_EndElement (Uri As String, Name As String, Text As StringBuilder) Log(Name&":"&Text) End Sub
حالا میتونید پارامتر هارو دریافت کنید که من به صورت Log نمایش شون دادم.
دیگه خودتون یکمی خلاق باشید میتونید پرارمترهارو توی Label قرار بدید اون Labelهارو داخل یک پنل قرار بدید و پنل هارو هم توی یک اسکرول ویوی افقی قرار بدید.
اما چطور از اینگونه اپلیکیشن ها کسب درآمد کنیم؟
شما بیاین و اینطور برنامه هارو درون پرداخت یا بصورت مستقیم پولی کنید کسی نمیخره چون طرف میره گوگل میکنه براش اطلاعات آب و هوا میاد مگر اینکه خلاقیتی از خودتون نشون بدید و یک اپلیکیشن خیلی پیشرفته در این مورد بسازید. برای کسب درآمد از اینطور پروژه ها بهتره از تبلیغات همسان تپسل استفاده بشه.
اگر خواستید از spinner استفاده کنید این فایل json مفید خواهد بود که حاوی نام تمام استان ها و شهرهای ایران هست. در سورس اذانگو به طول و عرض جغرافیایی نیاز داشتیم اما در این پروژه به این موارد نیازی نیست و فقط نام شهر کافیست که برای دسته بندی در spinner نام استان هم لازم هست. به همین دلیل این فایل جیسون فقط دارای آیدی، استان و شهر است.
خب این آموزش هم به پایان رسید.
موفق باشید.