رفتن به مطلب

ساختن پوش ناتیفیکیشن با آیکن اختصاصی(ازبیرون) در B4A توسط توسعه یار


پژمان نیکروان

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

سلام.

با این آموزش یاد میگیرید که چطور براحتی یک پوش اختصاصی با توسعه یار بسازید و آیکن ناتیفیکیشن هم از بیرون تعیین کنید!

 

چندتا نکته:

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

• برای ایجاد ناتیفیکیشن از کتابخانه NotificationBuilder استفاده شده و برای دانلود آیکن از HttpUtiles2

• سعی کنید آیکن رو در سایز 50x50 درنظر بگیرید ، چون اگه بزرگ باشه هم حجمش زیاد میشه و هم توی بعضی گوشیا بیرون میزنه

• ما اینجا smallIcon رو هم مشخص کردیم ، و آیکن خود اپ رو دادیم ، این آیکن تو بعضی گوشیا خیلی خیلی ریز کنار آیکن اصلی نمایش داده میشه ، نمیشه پاکش کرد چون خطا میگیره ، اما میتونید یه آیکن دیگه توی مسیر Objects\res\drawable قرار بدید که نفهمن برنامه شماست یا یه آیکن Transparnet قرار بدید که اصلا دیده نشه

 

تو این آموزش از سایت توسعه یار استفاده شده و از اونجا پوش ارسال کردیم... خیلی سادست. :53:

 

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

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

درود

 

بنظرم باید عنوان رو میزاشتی کار با شبکه توسعه یار بهتر بود

چون این عنوانی که شما گذاشتی من فکر کردم از تو هاست شخصی :)

موفق باشید

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

اموزش خوبی بود

یه سایت دیگه هم هست به اسم پوشه اونم خوبه

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

من فیلمی را که زحمتش را کشیدید ندیدم

ضمن تشکر یه سوال جیسون را هم پشتیبانی می کنه؟

دسته بندی کاربرها چی؟

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

من فیلمی را که زحمتش را کشیدید ندیدم

ضمن تشکر یه سوال جیسون را هم پشتیبانی می کنه؟

دسته بندی کاربرها چی؟

ببینید این سایت به این صورت هست که 6فیلد به ما میده و بطور دلخواه میتونیم اونا پر کنیم.

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

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

ببینید این سایت به این صورت هست که 6فیلد به ما میده و بطور دلخواه میتونیم اونا پر کنیم.

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

دسته بندی کاربر ها چطوره؟

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

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

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

واقعا آموزش فوق العاده ای بود.

متشکرم.

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

دسته بندی کاربر ها چطوره؟

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

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

اما موقع ارسال داده متنی میتونید تعیین کنید که داده به کدوم دسته ارسال بشه: کاربران عادی و ویژه | کاربران ویژه | همه نصب کننده ها

داده متنی برای ارسال پوش نیست و فقط یک تکست باکس دراختیارتون میذاره برای ارسال اما میتونید به جای پوش هم ازش استفاده کنید.

درواقع داده متنی برای اضافه کردن،حذف و ویرایش کردن دیتابیس آفلاین از طریق پنل توسعه یار بدون کدنویسی تحت وب هست.

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

پژمان جان خیلی ممنون از آموزشت فقط من یکم کدها رو دست کاری کردم برای امکانات بیشتر

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

ولی اگه کاربر برنامه رو بسته باشه باشه هیچی براش نمیاد وقتی هم ک برنامه رو باز میکنم اکتیویتی clickOnPush اجرا میشه بصورت خالی

اینم کدهام

 

اکتیویتی clickOnPush

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

Sub Process_Globals

End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
Dim click As TYPush
click.ExecuteClick
If ToseeyarDataReceiver.s1=1 Then
	ToseeyarDataReceiver.s1=0
Dim i As Intent
i.Initialize(i.ACTION_VIEW,ToseeyarDataReceiver.link3)
StartActivity(i)
Activity.Finish
Else if ToseeyarDataReceiver.s1=2 Then
	ToseeyarDataReceiver.s1=0
Dim md3 As MD_BasicDialog
md3.Initialize("md3")
md3.Show(ToseeyarDataReceiver.datas.GetExtra(ToseeyarDataReceiver.pushExtras.FIELD2),ToseeyarDataReceiver.datas.GetExtra(ToseeyarDataReceiver.pushExtras.FIELD5),"فهمیدم","","",Null,True,False)
Else if ToseeyarDataReceiver.s1=3 Then
	ToseeyarDataReceiver.s1=0
	Try
	Dim ariac As AriaMarkets
	ariac.Cafebazaar_SafheBarname(ToseeyarDataReceiver.link3)
	Activity.Finish
		Catch
		ToastMessageShow("مارکت کافه بازار روی گوشی شما نصب نیست",True)
		Activity.Finish
	End Try
Else if ToseeyarDataReceiver.s1=4 Then
	ToseeyarDataReceiver.s1=0
	Try
	Dim ariac As AriaMarkets
	ariac.Myket_SafheBarname(ToseeyarDataReceiver.link3)
	Activity.Finish
		Catch
		ToastMessageShow("مارکت مایکت روی گوشی شما نصب نیست",True)
		Activity.Finish
	End Try
Else if ToseeyarDataReceiver.s1=5 Then
	ToseeyarDataReceiver.s1=0
	Try
	Dim ariac As AriaMarkets
	ariac.IranApps_SafheBarname(ToseeyarDataReceiver.link3)
	Activity.Finish
		Catch
		ToastMessageShow("مارکت ایران اپس روی گوشی شما نصب نیست",True)
		Activity.Finish
	End Try
Else if ToseeyarDataReceiver.s1=6 Then
	ToseeyarDataReceiver.s1=0
	Try
	Dim ariac As AriaMarkets
	ariac.ParsHub_SafheBarname(ToseeyarDataReceiver.link3)
	Activity.Finish
	Catch
		ToastMessageShow("مارکت پارس هاب روی گوشی شما نصب نیست",True)
		Activity.Finish
	End Try
Else if ToseeyarDataReceiver.s1=7 Then
	ToseeyarDataReceiver.s1=0
	Try
		Dim ariac As AriaMarkets
ariac.Cafebazaar_SafheToseDahande(ToseeyarDataReceiver.link3)
Activity.Finish
		Catch
		ToastMessageShow("مارکت کافه بازار روی گوشی شما نصب نیست",True)
		Activity.Finish
	End Try
Else if ToseeyarDataReceiver.s1=8 Then
	ToseeyarDataReceiver.s1=0
		Try
Private i As Intent
i.Initialize(i.ACTION_VIEW,ToseeyarDataReceiver.link3)
StartActivity(i)
Activity.Finish
		Catch
		ToastMessageShow("مارکت مایکت روی گوشی شما نصب نیست",True)
		Activity.Finish
	End Try
Else if ToseeyarDataReceiver.s1=9 Then
	ToseeyarDataReceiver.s1=0
		Try
Private i As Intent
i.Initialize(i.ACTION_VIEW,ToseeyarDataReceiver.link3)
StartActivity(i)
Activity.Finish
Catch
	ToastMessageShow("مارکت ایران اپس روی گوشی شما نصب نیست",True)
		Activity.Finish
End Try	
Else
	Activity.Finish
End If
End Sub

Sub md3_buttonpress(response As Int)
If response=1 Then
	Activity.Finish
	Else if response=-1 Then
	Activity.Finish
End If
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

سرویس توسعه یار

#Region  Service Attributes 
	#StartAtBoot: False
	
#End Region

Sub Process_Globals
	Dim types As TYTypes
	Dim pushExtras As TYPushExtras
	'Dim dataExtras As TYDataExtras
	'Dim newVersionExtras As TYNewVersionExtras
	'Dim contactExtras As TYContactExtras
	Dim ht As HttpJob
	Dim datas As Intent
	Dim s1 As Byte
	Dim link3 As String
End Sub

Sub Service_Create
ht.Initialize("ht",Me)
End Sub

Sub Service_Start (StartingIntent As Intent)
	datas=StartingIntent
If datas<>Null Then
	If datas.GetExtra("type")=types.TYPE_PUSH Then
		If datas.GetExtra(pushExtras.FIELD1)="link" Then
			s1=1
			link3=datas.GetExtra(pushExtras.FIELD5)
			ht.Download(datas.GetExtra(pushExtras.FIELD4))
	Else if datas.GetExtra(pushExtras.FIELD1)="matn" Then
			s1=2
		ht.Download(datas.GetExtra(pushExtras.FIELD4))
		else if datas.GetExtra(pushExtras.FIELD1)="bazar" Then
			s1=3
		link3=datas.GetExtra(pushExtras.FIELD5)
			ht.Download(datas.GetExtra(pushExtras.FIELD4))
		Else if datas.GetExtra(pushExtras.FIELD1)="myket" Then
			s1=4
			link3=datas.GetExtra(pushExtras.FIELD5)
			ht.Download(datas.GetExtra(pushExtras.FIELD4))
		Else if datas.GetExtra(pushExtras.FIELD1)="iranapps" Then
			s1=5
			link3=datas.GetExtra(pushExtras.FIELD5)
			ht.Download(datas.GetExtra(pushExtras.FIELD4))
		Else if datas.GetExtra(pushExtras.FIELD1)="parshub" Then
			s1=6
			link3=datas.GetExtra(pushExtras.FIELD5)
			ht.Download(datas.GetExtra(pushExtras.FIELD4))
			else if datas.GetExtra(pushExtras.FIELD1)="tbazar" Then
			s1=7
		link3=datas.GetExtra(pushExtras.FIELD5)
			ht.Download(datas.GetExtra(pushExtras.FIELD4))
		Else if datas.GetExtra(pushExtras.FIELD1)="tmyket" Then
			s1=8
			link3=datas.GetExtra(pushExtras.FIELD5)
			ht.Download(datas.GetExtra(pushExtras.FIELD4))
		Else if datas.GetExtra(pushExtras.FIELD1)="tiranapps" Then
			s1=9
			link3=datas.GetExtra(pushExtras.FIELD5)
			ht.Download(datas.GetExtra(pushExtras.FIELD4))
	End If
	End If
End If
End Sub
Sub jobdone(job As HttpJob)
	If job.Success Then
	Dim n As NotificationBuilder
	n.Initialize
	n.ContentTitle=datas.GetExtra(pushExtras.FIELD2)
	n.ContentText=datas.GetExtra(pushExtras.FIELD3)
	n.SmallIcon="qls"
	n.LargeIcon=job.GetBitmap
	n.AutoCancel=True 'برای اینکه بعد از کلیک رو ناتیفیکیشن خودکار پاک بشه...
	n.setActivity(clickOnPush)
	n.Notify(1)
	Else
		ht.Download(datas.GetExtra(pushExtras.FIELD4))
	End If
End Sub
Sub Service_Destroy

End Sub

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

ولی اگه کاربر برنامه رو بسته باشه باشه هیچی براش نمیاد وقتی هم ک برنامه رو باز میکنم اکتیویتی clickOnPush اجرا میشه بصورت خالی

قبل از اینکه تغییری ایجاد کنید مشکلی نداشت و دریافت میشد؟

لطفا سورس رو پیوست کنید ببینم. ♥

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

آقای نیکروان من برای تست ، وقتی پوش میفرستم این ارور میاد تو دیباگ

android.content.ActivityNotFoundException: Unable to find explicit activity class {ir.peem.kishmish/ir.peem.kishmish.toseeyardatareceiver}; have you declared this activity in your AndroidManifest.xml?

باید چیزیو تغییر بدم؟

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

قبل از اینکه تغییری ایجاد کنید مشکلی نداشت و دریافت میشد؟

لطفا سورس رو پیوست کنید ببینم. ♥

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

هم توی شبیه ساز هم گوشیم، lg g4 android 6

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

سرویس نباید بصورت پایدار ایجاد بشه؟

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

آقای نیکروان من برای تست ، وقتی پوش میفرستم این ارور میاد تو دیباگ

android.content.ActivityNotFoundException: Unable to find explicit activity class {ir.peem.kishmish/ir.peem.kishmish.toseeyardatareceiver}; have you declared this activity in your AndroidManifest.xml?

باید چیزیو تغییر بدم؟

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

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

 

 

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

هم توی شبیه ساز هم گوشیم، lg g4 android 6

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

سرویس نباید بصورت پایدار ایجاد بشه؟

نه ربطی به سرویس نداره ، خود GCM بصورت برادکست دریافت میشه ، اون سرویس زمانی استارت میشه که دیتا دریافت میشه و ازاونجا میتونیم اطلاعات رو استخراج کنیم.

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

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

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

هم توی شبیه ساز هم گوشیم، lg g4 android 6

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

سرویس نباید بصورت پایدار ایجاد بشه؟

محض اطلاع دوستان بگم که کسایی که این مشکلو دارن و از بیسیک استفاده میکنن حتما بخونن!

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

 

توجه توجه

دوستانی که از #بیسیک4اندروید استفاده میکنند!

طبق گزارش کاربران مشکلی وجود داشت مبنی براینکه بعد از بستن برنامه از اپ های اخیر دیگه اعلانی دریافت نمیشد ، درواقع اگه به بخش لاگ توجه میکردید کتابخانه ی «توسعه یار» اعلان رو دریافت میکرد و سرویس ToseeyarDataReceiver رو اجرا میکرد ، اما این سرویس عملیاتی انجام نمیداد که این مشکل فقط در بیسیک بود.

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

✅پس B4Aکار های عزیز لطفا نسخه 1.02 کتابخانه رو از بخش کتابخانه ها دریافت کنند.

• همچنین کتابخانه ی قبلی رو حذف و این کتابخانه که اسمش ToseeYar_Lib_b4a هست رو به کتابخانه ها اضافه کنید.

همچنین در رویداد Service_Start سرویس ToseeyarDataReceiver بعد از قرار دادن StartingIntent برابر با datas ، شرط وجود داشتن دیتا رو قرار بدید تا به مشکل برنخوره:

If datas.HasExtra("type") Then

 البته اگه کلاس ToseeyarDataReceiver رو از مستندات دریافت کنید ، این شرط بطور خودکار قرار داره.

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

  • 2 هفته بعد...

سلام آقای نیکروان 

من جدیدا یه مشکلی پیدا کردم توی دریافت پوش

تا مدتی پیش خوب کار میکرد اما الان این ارورو میده

ty1.PNG

 

ty2.PNG

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

سلام آقای نیکروان 

من جدیدا یه مشکلی پیدا کردم توی دریافت پوش

تا مدتی پیش خوب کار میکرد اما الان این ارورو میده

ty1.PNG

 

 

حل شد. طبق گفته پشتیبانی سایت توسعه یار به جای خط 24

باید 

if datas.HasExtra("type") Then

رو قرار بدیم. گذاشتم حل شد :)

خیبی سریع جواب میدن خداییش

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

  • 3 هفته بعد...

آقای نیکروان خسته نباشید؛ من به از نسخه 3.8 بیسیک استفاده می کنم ولی موقع اجرا برنامه پیغام فورس کلوز میده

حتی سورس خودتون رو هم بدون تغییر میزنم باز همون مشکل پیش میاد؟

آیا اشکال از بیسیکه یا از سورس؟

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

آقای نیکروان خسته نباشید؛ من به از نسخه 3.8 بیسیک استفاده می کنم ولی موقع اجرا برنامه پیغام فورس کلوز میده

حتی سورس خودتون رو هم بدون تغییر میزنم باز همون مشکل پیش میاد؟

آیا اشکال از بیسیکه یا از سورس؟

سلام عزیز ممنون.

لطفا از پنل ، آخرین ورژن کتابخانه رو دانلود و آزمایش کنید.

اگه بازهم اینجوری بود خطای لاگ رو قرار بدید.

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

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

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