رفتن به مطلب
  • 0

ساخت نوتیفکشن برای دیتابیس


Mr Silence

سوال

درود خدمت اساتید

بنده تازه کار هستم پس اگه سوالم پیش پا افتادس عذرخواهی میکنم :blush:

میخواستم یک نوتیفکشن بسازم که هرموقع به دیتابیس چیز جدیدی اضافه میشه

به کاربر اطلاع بده مثلا (یه خبر جدید رسید!) و زمانی که برنامه بسته هم هست این کار متوقف نشه 

ممنون میشم کمکم کنید خیلی نیاز دارم بهش ♥

لینک ارسال
به اشتراک گذاری در سایت های دیگر

17 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

در در 1397/08/25, 21:20:36، godping گفته است :

مرسی ار پاسخگوییتون 

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

من میخوام وقتی یک مقدار جدید به دیتابیس اضافه میشه بطور خودکار به کاربر نوتیفکشن بده نه اینکه خودم ارسالش کنم

این کار شما به دو صورت مقدوره

اول پوش نوتیفیکیشن که فک میکنم میشه اتومات هم ارسال بشه

دوم ایجاد سرویس فعال و پایدار در گوشی که هر لحظه دیتابیس انلاین رو چک کنه در صورت لزوم نوتیف بده که معایبی هم داره از جمله مصرف باتری زیاد,امکان بسته شدن,محدودیت های

سیستم عامل مخصوصا اندروید ۶به بالا

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

اگه میشه روش هایی که گفتید با کد یا سورس توضیح بدید :scratch_one-s_head:

 

 

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

اینو داخل Activity_Create قرار دادم 

If job.Success Then
		File.WriteString(File.DirInternal,"source.txt",job.GetString)
		WebView1.LoadHtml(job.GetString)

 

service module هم به این صورت هستش

 

#Region  Service Attributes 
	 #StartAtBoot: True
     #StartCommandReturnValue: android.app.Service.START_STICKY
#End Region


Sub Process_Globals
	Dim ch As HttpJob
	Dim a As PhoneEvents
	
End Sub
Sub Service_Create
	a.Initialize("a")
	ch.Initialize("ch",Me)
	
End Sub
Sub a_ConnectivityChanged (NetworkType As String, State As String, Intent As Intent)
	If State="CONNECTED" Then
		Dim Query As String
		ch.Download2("http://192.168.1.4/test4/countries.php",Array As String("query",Query))

	End If
End Sub
Sub jobdone(job As HttpJob)
	If job.Success Then
		Dim r As String
		Try
			r=File.ReadString(File.DirInternal,"source.txt")
		

		Catch
			Log("")
		End Try
		If r<>job.GetString Then
			Dim no As Notification
			no.Initialize
			no.AutoCancel=True
			no.Icon="icon"
			no.Sound=True
			no.Vibrate=True
			no.SetInfo("خبرخوان","خبر جدید رسید!!",Main)
			no.Notify(0)
		End If
	End If
End Sub
Sub Service_Start (StartingIntent As Intent)

End Sub
Sub Service_Destroy
	StartService("")
End Sub

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 5 ساعت قبل، msd313 گفته است :

از سوکت استفاده کنید بهتره

توی انجمن جستجو کنید آموزشش هست

مرسی درباره سوکت خواندم

ولی سوکت نیاز به vps داره و دردسر فراوان تا راه بیافته 

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

روشی ساده تری مثل سرویس واسم بهتره ولی نمیتونم ازش نتیجه بگیرم 

اگه کمک کنید ممنون میشم♥ 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بنده تو برنامه خودم برای دریافت سفارش ها از همون سرویس استفاده کردم و هر وقت سفارش جدید بیاد با نوتیفیکیشن متوجه بشم

به اینصورت که توی سرویس میای تعداد ردیف جدول هات رو میگیری

بعدش میریزی توی یه متغییر و یه فایل

بعد کافیه یه شرط بذاری که اگه تعداد جدولت زیاد بشه بیاد با اون متغییر چک کنه و اگه زیاد بود نوتیفیکیشن بده

 

توی برنامه شما هم سورس رو دانلود میکنم بهت میگم مشکل کجاست

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

تا حالا بنده از لوکال هاست داخل کامپیوتر استفاده نکردم و مستقیم برنامه ها رو روی سرور اینترنتی تست میکنم

ولی اینا رو به برنامه ات اضافه کن

1 - سرویس اصلاً در حال اجرا نیست

توی اکتیویتی کریت  کد   StartService(check)  رو اضافه کن تا سرویس اجرا بشه.

2- توی سرویست در تابع سرویس استارت این کد رو اضافه کن (عدد 5000 میگه 5 ثانیه یک بار سرویس اجرا بشه خودت میتونی کم و زیادش کنی)

 StartServiceAt("",DateTime.Now+5000,True)

اینا رو تست کن و خبر بده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱ ساعت قبل، msd313 گفته است :

تا حالا بنده از لوکال هاست داخل کامپیوتر استفاده نکردم و مستقیم برنامه ها رو روی سرور اینترنتی تست میکنم

ولی اینا رو به برنامه ات اضافه کن

1 - سرویس اصلاً در حال اجرا نیست

توی اکتیویتی کریت  کد   StartService(check)  رو اضافه کن تا سرویس اجرا بشه.

2- توی سرویست در تابع سرویس استارت این کد رو اضافه کن (عدد 5000 میگه 5 ثانیه یک بار سرویس اجرا بشه خودت میتونی کم و زیادش کنی)

 StartServiceAt("",DateTime.Now+5000,True)

اینا رو تست کن و خبر بده

کارهایی که گفتید انجام دادم ولی فقط به محض اجرای برنامه نوتیفیکشن میده و عمل چک انجام نمیشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1397/08/27, 17:38:19، godping گفته است :

کارهایی که گفتید انجام دادم ولی فقط به محض اجرای برنامه نوتیفیکشن میده و عمل چک انجام نمیشه

عمل چک باید توی سرویس انجام بشه یعنی کد دریافت خبر جدید و اضافه شدن یک رکورد به جدولت رو توی سرویس چک کنی
الآن شما ببین در بخش logs بیسیک وقتی برنامه رو اجرا میکنی سرویست اجرا میشه این اجرا باید هر چند ثانیه یکبار انجام بشه

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 4 ساعت قبل، msd313 گفته است :

عمل چک باید توی سرویس انجام بشه یعنی کد دریافت خبر جدید و اضافه شدن یک رکورد به جدولت رو توی سرویس چک کنی
الآن شما ببین در بخش logs بیسیک وقتی برنامه رو اجرا میکنی سرویست اجرا میشه این اجرا باید هر چند ثانیه یکبار انجام بشه

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

سروس کار میکنه log هم داره ولی با خبر جدید نوتیفیکشن کار نمیکنه

خودم میدونم مشکل از شرطم هست ولی نمیدونم شرط درستش چیه

p627194_Screenshot_5.jpg

در 3 ساعت قبل، msd313 گفته است :

راستی فایل php هم بفرست و یا کدش رو بذار ببینیم چیکار میکنه

بفرمایید خدمت شما

countries

f602252_Screenshot_7.jpg

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1397/08/27, 04:33:12، godping گفته است :

ch.Download2("http://192.168.1.4/test4/countries.php",Array As String("query",Query))

میتونی بگی این خط کد دقیقاً چه کاری رو داره انجام میده؟شما که هیچ کوئری تعریف نکردید.

job.getstring توی سرویس هم لاگ بگیر ببین اصلاً چیزی برمیگردونه یا نه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

این خط داخل برنامه ستون و ردیف هارو میگیره فقط واسه امتحان گذاشتمش داخل سرویس

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1397/09/01, 20:07:15، godping گفته است :

این خط داخل برنامه ستون و ردیف هارو میگیره فقط واسه امتحان گذاشتمش داخل سرویس

 

حالا از این کد جواب گرفتی یعنی وقتی توی برنامه لاگ میگیری میگه چند تا ردیف ایجاد شده توی جدول دیتا بیس؟؟؟؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

مرسی ار پاسخگوییتون 

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

من میخوام وقتی یک مقدار جدید به دیتابیس اضافه میشه بطور خودکار به کاربر نوتیفکشن بده نه اینکه خودم ارسالش کنم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...