Radiomedia 36 ارسال شده در 6 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 6 تیر، ۱۳۹۹ با سلام پست ویژه ما: کتابخانه پوش نوتیفیکیشن ماتیسا - MaatisaPush Library 1.05 اول بگم در کانال اینو پولی گذاشته بودم اما چون کم کاربرد بود و نمونه های رایگان و محدود موجود بود، رایگانش کردم تا بیشتر مورد استفاده قرار بگیره و بجاش برای شادی روح شهدای دفاع مقدس بخصوص عموهای من (شهیدان محمد و علی فرخی) یه صلوات بفرستید، سپاسگزارم. پوش نوتیفیکیشن؟ سرویسی که قادر است در حالت پسزمینه هرزمانی که تلفن به اینترنت متصل است (مخصوصا زمانی که اپلیکیشنهای ما در حالت اجرا نیستند)، پیام موردنظر ما را که در سرویس ابری خود قرار داده ایم در Notification area گوشی کاربر نشان دهد. درحال حاضر سرویس های مختلفی برای انجام این امر وجود دارد، و حتی گوگل هم سرویسی با نام Firebase ارائه داده است. مزایای این سرویس ها: - نیازی به سرور و یا هاست خودی نیست و پیامهای ما در سرویس ابری آنها ذخیره میشود. - نیازی به نوشتن یک خط کد هم نیست، همه کارها با IDE طراحی شده خودشان انجام خواهد شد و با اسکریپت های آماده میتوان در برنامه خود راه اندازی کرد. و... معایب: - این سرویس ها کاملا نامحدود نیستند و محدودیتهایی دارند، از جمله: • تعداد کاربرانی که میتوانید برای آنها پیام ارسال کنید. • تعداد پیامهایی که در بازه زمانی مشخص میتوانید ارسال کنید. • نوع و ظاهر پیام ارسالی: شامل عکس دار بودن و... این موارد با پرداخت هزینه هایی قابل ارتقا هستند. - سفارشی سازی کامل پیام ارسالی و... ما این موارد را سطحی و کلی بیان کردیم، پس ممکن است سرویس هایی باشند که در ارائه خدمات تنوع بیشتر یا کمتری ارائه دهند. اما کتابخانه ای که ما ارائه کردیم چگونه است؟ {ابتدا باید توجه داشته باشید که تعداد پیامهای ارسالی، تعداد کاربران و... همه موارد به سرویس ابری خودتان بستگی دارد، و اگر منابع تخصیصی خودتان را تمام کنید تا شارژ مجدد نمیتوانید از سرویس خود استفاده ای کنید، پس موقع خرید سرویس ابری حتما با توجه به نیاز خود سرویس موردنظر را خریداری کنید. همچنین میتوانید صرفا برای انجام تست از سرویس های رایگان نیز استفاده کنید} پس از خرید کتابخانه و استخراج آن از فایل زیپ شاهد ۳ فایل زیپ دیگر خواهید بود: • فایل کتابخانه • فایل های سمت سرور • سمپل کتابخانه دو فایل jar و xml موجود در زیپ Library را در پوشه Additional Libraries کپی کنید. در زیپ ServerSide دو فایل وجود دارد. • فایل MaatisaPush.php این فایل را در مکانی دلخواه در هاست خود کپی کنید. و آدرس آن را برای قراردادن در کد به خاطر بسپارید. همچنین باید این فایل را با استفاده از ویرایشگر متنی باز کنید و اطلاعات دیتابیس خود را در خطوط ۶ تا ۹ وارد کنید. خط ۶ - آدرس یا آیپی هاست دیتابیس خط ۷ - نام کاربری Username دیتابیس خط ۸ - پسورد دیتابیس خط ۹ - نام دیتابیس • فایل pushnotify.sql این فایل را هم در دیتابیس mysql هاست خود import کنید. - اگر مایل به اینکار نبودید میتوانید با مقادیر زیر یک جدول در دیتابیس خود با استفاده از phpMyAdmin بسازید: - ID - Auto Increase - Index برای بررسی آخرین پیام وارد شده استفاده میشود - status - TEXT برای تعیین وضعیت رفتار نوتیفیکیشن استفاده میشود و مقادیر 'app' یا 'link' میگیرد که اگر app باشد، هنگام کلیک کاربر، اکتیویتی تعیین شده باز خواهد شد. و اگر link باشد، آدرس وب وارد شده در فیلد link با intent باز خواهد شد. - titr - TEXT متن نوشته عنوان یا نوشته بزرگ نوتیفیکیشن - body - TEXT متن بدنه نوتیفیکیشن - link - TEXT لینک وب، برای زمانی که مقدار فیلد status برابر link باشد. × فعلا برای ورود اطلاعات در دیتابیس باید دستی اینکار را انجام دهید، یعنی هربار که میخواهید پیغام جدیدی برای کاربران ارسال کنید، رکورد جدیدی هم باید ایجاد کنید. پس از انجام این کارها برای نمونه میتوانید پروژه نمونه را بازکنید و طریقه پیاده سازی این کتابخانه را ببینید و کدهای موجود در پروژه نمونه را در پروژه خود کپی کنید. - نمونه سورس و آموزش پیاده سازی: ابتدا کتابخانه MaatisaPush را تیک بزنید. Sub Globals Dim mp As MaatisaPush End Sub Sub Activity_Create(FirstTime As Boolean) mp.Initialize( "main" , "mp" , False) mp.setValues(10 , 0 , "http://maatisa.ir/app/" , "pushnotify" , "" , "main") LogColor( $"${mp.About}"$ , Colors.Yellow) mp.startPush End Sub Sub Activity_LongClick mp.ListenStatus = Not(mp.ListenStatus) Log($"Enabled: ${mp.ListenStatus}"$) End Sub Sub mp_pushReceived(success As Boolean, pushInfo As MaatisaPushArgs) ' LogColor($"pushReceived Event: ${success} & er: ${pushInfo.error}"$, Colors.Green) ' If success Then Dim ph As PhoneIntents Dim n As Notification n.Initialize If pushInfo.status = "app" Then n.SetInfo(pushInfo.titr, pushInfo.body, Me) Else If pushInfo.status = "link" Then n.SetInfo(pushInfo.titr, pushInfo.body ,ph.OpenBrowser(pushInfo.link)) End If n.Notify(2) Else LogColor($"Error: ${pushInfo.error}"$, Colors.Magenta) End If End Sub Sub Activity_KeyPress (KeyCode As Int) As Boolean 'Return True to consume the event' If KeyCode = KeyCodes.KEYCODE_BACK Then ExitApplication End If Return True End Sub اسکرین از لاگ برنامه : اسکرین شات از صفحه کد نمونه: دانلودها: دانلود فایل پیش نمایش apk دانلود کتابخانه + فایل های سمت سرور(php و sql) + پروژه نمونه توضیح خط به خط کدها رو هم آماده میکنم همین پست رو ویرایش میکنم ببخشید که سرم یذره شلوغه ایشاله کاربردی باشه و لبتون خندون لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
b4xcenterb 5 ارسال شده در 6 تیر، ۱۳۹۹ اشتراک گذاری ارسال شده در 6 تیر، ۱۳۹۹ سلام ممنونم بابت اشتراک گذاری اما <dependsOn includesSingletonModules="true">maatisaokhttputils2</dependsOn> اما این dependsOn قرار داده نشده لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
Radiomedia 36 ارسال شده در 7 تیر، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 7 تیر، ۱۳۹۹ در 15 ساعت قبل، b4xcenterb گفته است : اما این dependsOn قرار داده نشده سلام، ممنون بابت فیدبک، اما من متوجه نشدم، این خط در فایل xml در خط 7 موجوده، و البته کتابخانه هم بدون مشکل کار میکنه. اما اگر هرگونه ایرادی هست، امر بفرمایید اصلاح میشه. فایل xml : <?xml version="1.0" encoding="utf-8"?> <root> <doclet-version-NOT-library-version>1.00</doclet-version-NOT-library-version> <b4x_version>9.80</b4x_version> <dependsOn>json</dependsOn> <dependsOn>phone</dependsOn> <dependsOn includesSingletonModules="true">maatisaokhttputils2</dependsOn> <dependsOn>okhttp</dependsOn> <dependsOn>stringutils</dependsOn> <dependsOn>okhttp-3.5.0</dependsOn> <dependsOn>okio-1.11.0</dependsOn> <class b4a_type="Service"> <name>ir.maatisa.pushnotify.push</name> <shortname>push</shortname> <owner>process</owner> <objectwrapper>java.lang.Class</objectwrapper> <permission>android.permission.VIBRATE</permission> <field> <name DesignerName="tmr">_tmr</name> <returntype>anywheresoftware.b4a.objects.Timer</returntype> </field> <field> <name DesignerName="linkR">_linkr</name> <returntype>String</returntype> </field> <field> <name DesignerName="str2">_str2</name> <returntype>String</returntype> </field> <field> <name DesignerName="jsonob">_jsonob</name> <returntype>anywheresoftware.b4a.objects.collections.JSONParser</returntype> </field> <field> <name DesignerName="mapob">_mapob</name> <returntype>anywheresoftware.b4a.objects.collections.Map</returntype> </field> <field> <name DesignerName="ac">_ac</name> <returntype>Object</returntype> </field> <field> <name DesignerName="inter">_inter</name> <returntype>int</returntype> </field> <field> <name DesignerName="phpLink">_phplink</name> <returntype>String</returntype> </field> <field> <name DesignerName="ico">_ico</name> <returntype>String</returntype> </field> <field> <name DesignerName="table">_table</name> <returntype>String</returntype> </field> <field> <name DesignerName="tout">_tout</name> <returntype>int</returntype> </field> <field> <name DesignerName="mapS">_maps</name> <returntype>anywheresoftware.b4a.objects.collections.Map</returntype> </field> <field> <name DesignerName="listen_pushStatus">_listen_pushstatus</name> <returntype>boolean</returntype> </field> <field> <name DesignerName="serv_notify">_serv_notify</name> <returntype>boolean</returntype> </field> <field> <name DesignerName="callAc">_callac</name> <returntype>Object</returntype> </field> <field> <name DesignerName="EvName">_evname</name> <returntype>String</returntype> </field> <method> <name>process_globals</name> <returntype>void</returntype> </method> </class> <class> <name>ir.maatisa.pushnotify.maatisapush</name> <shortname>MaatisaPush</shortname> <comment>A MaatisaPush Class that handles "push" service. Author: Mohsen Torabi Sample code in <code>mp.About</code> Description More Info: <link>Telegram|https://t.me/maatisa_swdg</link> </comment> <owner>process</owner> <event>pushReceived(success as Boolean, pushInfo as MaatisaPushArgs)</event> <method> <name>IsInitialized</name> <comment>Tests whether the object has been initialized.</comment> <returntype>boolean</returntype> </method> <method> <name DesignerName="About">_about</name> <comment>This library and php file was created by Mohsen Torabi from Maatisa.ir Contact me: [email protected] More Info: <link>Telegram|https://t.me/maatisa_swdg</link> Sample: <code> #BridgeLogger: True Sub Globals Dim mp As MaatisaPush End Sub Sub Activity_Create(FirstTime As Boolean) mp.Initialize( "main" , "mp" , True) mp.setValues(0 , 0 , "http://yrDomain.ir/" , "pushnotify" , "" , "main") LogColor($"${mp.About}"$ , Colors.Yellow) mp.startPush End Sub 'You must do it in a service that whenever user exit application, then you can receive datas from your service. Sub mp_pushReceived(success As Boolean, pushInfo As MaatisaPushArgs) LogColor($"pushReceived Event: ${success} & er: ${pushInfo.error}"$, Colors.Green) If success Then Dim ph As PhoneIntents 'Needs Phone library Dim n As Notification n.Initialize If pushInfo.status = "app" Then n.SetInfo(pushInfo.titr, pushInfo.body, Me) ' //ac = Main Else If pushInfo.status = "link" Then n.SetInfo(pushInfo.titr, pushInfo.body ,ph.OpenBrowser(pushInfo.link)) End If n.Notify(2) End If End Sub </code> </comment> <returntype>String</returntype> </method> <method> <name DesignerName="getListenStatus" HideFromIDE="true">_getlistenstatus</name> <returntype>boolean</returntype> </method> <method> <name DesignerName="Initialize">_initialize</name> <comment>callback - is the module that handle the pushReceived Event. like "main" or "yourActivityName" EventName - that will be used for pushReceived Event. showServiceNotification - If True, Service shows a notification itself. If False, You must set the valid callback [Activity or Service] and Event name, and you can create your custom notification. <code>mp.Initialize( "main" , "mp" , True) </code> </comment> <returntype>String</returntype> <parameter> <name>ba</name> <type>anywheresoftware.b4a.BA</type> </parameter> <parameter> <name>callback</name> <type>String</type> </parameter> <parameter> <name>EventName</name> <type>String</type> </parameter> <parameter> <name>showServiceNotification</name> <type>boolean</type> </parameter> </method> <method> <name DesignerName="phpCode">_phpcode</name> <comment>Return PHP code that must upload in your host. PHP Code: <code> <?php // Mohsen Torabi - Maatisa.ir - Contact Me: [email protected] $q1 = $_GET['q1']; $tname = $_GET['tname']; $host = 'localhost'; $user = 'root'; $pass = ''; $db = 'yourDBname'; $con = @mysqli_connect($host,$user,$pass,$db); mysqli_set_charset($con,'UTF8'); If (!mysqli_connect_error()) { $tmax = mysqli_query($con,$q1); $rmax = mysqli_fetch_assoc($tmax); $mmax = $rmax['mnotify']; If($mmax > 0){ $query = "SELECT * FROM $tname WHERE ID=$mmax"; $table = mysqli_query($con,$query); $row = mysqli_fetch_assoc($table); $arr['title'] = 'pushok'; $arr['ID'] = $row['ID']; $arr['status'] = $row['status']; $arr['titr'] = $row['titr']; $arr['body'] = $row['body']; $arr['link'] = $row['link']; echo json_encode($arr); } Else { $arr['title'] = 'pushfailed'; echo json_encode($arr); } } Else { //!mysqli_connect_error() $arr['title'] = 'dbfailed'; echo json_encode($arr); } mysqli_close($con); ?> </code> </comment> <returntype>String</returntype> </method> <method> <name DesignerName="setListenStatus" HideFromIDE="true">_setlistenstatus</name> <comment>You can set "True" or "False" to Pause or Resume listening Push Service. Or get listening Status <code>mp.ListenStatus = Not(mp.ListenStatus)</code> </comment> <returntype>String</returntype> <parameter> <name>status</name> <type>boolean</type> </parameter> </method> <method> <name DesignerName="setValues">_setvalues</name> <comment>Sets values for receiving Data interval - interval of timer that check new notification. Default is : 60 - in Seconds. Timeout - of http GetRequest. Default is : 3000 - in ms. [Temporary: Disabled] phplink - just like this [with http:// or https:// ] : "https://yoursite.ir/" without "MaatisaPush.php" TableName - Your db table name for queries. icon - Small icon on notification. Activity - used for Notification Click event. Like: "main" or "yourActivityName" - For all be careful (Case Sensitive) - Your DataBase table must be contains these Fields: ID - Sure that is "Auto Increment", to finding out which record is fresh. status - For notification that open app or open a URL. Must be "app" or "link" titr - Title of notification. body - Body of notification. link - It use for open URL. Can be empty for status "app". <code>mp.setValues(0 , 0 , "http://yrDomain.ir/" , "pushnotify" , "" , "main")</code> </comment> <returntype>String</returntype> <parameter> <name>interval</name> <type>int</type> </parameter> <parameter> <name>Timeout</name> <type>int</type> </parameter> <parameter> <name>phpLink</name> <type>String</type> </parameter> <parameter> <name>TableName</name> <type>String</type> </parameter> <parameter> <name>icon</name> <type>String</type> </parameter> <parameter> <name>Activity</name> <type>String</type> </parameter> </method> <method> <name DesignerName="startPush">_startpush</name> <comment>Starts push service You must first call Initialize and setValues. It must call at last and never repeat it again. You can call ListenStatus to "Pause" or "Resume" Service later. </comment> <returntype>String</returntype> </method> <property> <name DesignerName="ListenStatus">_listenstatus</name> <comment>You can set "True" or "False" to Pause or Resume listening Push Service. Or get listening Status <code>mp.ListenStatus = Not(mp.ListenStatus)</code> </comment> <returntype>boolean</returntype> <parameter> <name>Value</name> <type>boolean</type> </parameter> </property> </class> <class> <name>ir.maatisa.pushnotify.push._maatisapushargs</name> <shortname>MaatisaPushArgs</shortname> <owner>process</owner> <method> <name>Initialize</name> <comment>Initializes the fields to their default value.</comment> <returntype>void</returntype> </method> <field> <name>IsInitialized</name> <comment>Tests whether the object has been initialized.</comment> <returntype>boolean</returntype> </field> <field> <name>titr</name> <returntype>String</returntype> </field> <field> <name>body</name> <returntype>String</returntype> </field> <field> <name>link</name> <returntype>String</returntype> </field> <field> <name>status</name> <returntype>String</returntype> </field> <field> <name>error</name> <returntype>String</returntype> </field> </class> <version>1.05</version> <author>Mohsen Torabi - Telegram: https://t.me/maatisa_swdg</author> </root> لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.