اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

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


mahdi0000

خالی بودن جیسون سرویس پوشه

10 ارسال در این موضوع قرار دارد

سلام دوستان

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

ولی پیام های جیسون خالی ارسال میشه.

یعنی ارسال میشه ولی خالیه

اگه راهنماییم کنید ممنون میشم.

این کدهای سرویسم

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

'Service module

Sub Process_Globals
	Dim PusheUtil As PusheB4AUtil
	
	Dim sql As SQL
	
End Sub
Sub Service_Create

End Sub

Sub Service_Start (StartingIntent As Intent)
	StartServiceAt("",DateTime.Now + 0.1*DateTime.TicksPerMinute,False)
	Log("sevise start shod")
'	If File.Exists(File.DirInternal,"glxdb.db") = False Then
		File.Copy(File.DirAssets,"glxdb.db",File.DirInternal,"glxdb.db")
'	End If
	
	sql.Initialize(File.DirInternal,"glxdb.db",False)
	Select StartingIntent.Action
		Case "com.google.android.c2dm.intent.RECEIVE" 
			MessageArrived(StartingIntent)
		
	End Select
End Sub

Sub MessageArrived (pIntent As Intent)
	Log("MessageArrived")
	Dim JsonMsg As String

	JsonMsg = PusheUtil.getPusheJsonMsg(pIntent)
'	If JsonMsg <> "" Then
		
		Log("Json message received: " & JsonMsg)
			ToastMessageShow("push",True)
		processJson(JsonMsg)

'	End If
End Sub

Sub processJson(jsonStr As String)
	Dim json1 As JSONParser
	Dim data As Map
	Dim s1 As String
	Dim s2 As String
	Dim s3 As String
	json1.Initialize(jsonStr)
	Try
		data = json1.NextObject
		s1 = data.Get("titr")
		s2 = data.Get("matn")
		s3 = data.Get("link")
		ToastMessageShow(s1,True)
'				sql.ExecNonQuery("insert  into glxtb(titr,matn,link) values ('"&s1&"','"&s2&"','"&s3&"')")
		sql.ExecNonQuery("insert  into glxtb(titr,matn,link) values ('ali','hasan','link')")
		Log("push in sql")
	Catch
		Log(LastException)

	End Try
End Sub


Sub Service_Destroy
	StartService("")
End Sub

 

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


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

سلام و درود

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

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 2 دقیقه قبل، alimo1999 گفته است :

سلام و درود

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

فکر کنم مشکل همگانی باشه

این لینک رو ببینید

در 17 دقیقه قبل، alimo1999 گفته است :

سلام و درود

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

لینکش رو محبت میکنید؟

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 8 ساعت قبل، mahdi0000 گفته است :

سلام دوستان

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

ولی پیام های جیسون خالی ارسال میشه.

یعنی ارسال میشه ولی خالیه

....

 

 

سلام 

این نمونه کدهای زیر درست کار میکنه 

 

#Region Module Attributes
	#StartAtBoot: False
	#ExcludeFromLibrary: True
#End Region

'Service module

Sub Process_Globals
Dim PusheUtil As PusheB4AUtil
Dim notifi_matn As String 
Dim notifi_aks As String 
Dim notifi_link As String 

End Sub

'{
'     "notifi_matn": "تیتر",
'     "notifi_aks": "تیتر",
'     "notifi_link": "متن"
'}


Sub Service_Create
	
End Sub

Sub Service_Start (StartingIntent As Intent)
	Select StartingIntent.Action
		Case "com.google.android.c2dm.intent.RECEIVE" 
			MessageArrived(StartingIntent)
	End Select
End Sub

Sub MessageArrived (pIntent As Intent)
	Dim JsonMsg As String

	JsonMsg = PusheUtil.getPusheJsonMsg(pIntent)
	If JsonMsg <> "" Then
	  'add your code here to deal with JsonMsg
	      Log("Json message received: " & JsonMsg)
	       processJson(JsonMsg)

	End If
End Sub

Sub processJson(jsonStr As String)
	Dim json1 As JSONParser
	Dim data As Map
	

  	json1.Initialize(jsonStr)
  	Try
	  	data = json1.NextObject
		
		 notifi_matn = data.Get("notifi_matn")
		 notifi_aks = data.Get("notifi_aks")
		 notifi_link = data.Get("notifi_link")
	
		ToastMessageShow("بروز رسانی از مرکز" , True)
  ToastMessageShow("notifi_aks"&notifi_aks&"notifi_matn"&notifi_matn&"notifi_link"&notifi_link,True)
  
  Catch
	Log(LastException)

  End Try
  
 
End Sub

Sub Service_Destroy

End Sub

مدل جیسونتون برای پوشه هم برای این کدها، باید اینطوری باشه :

{
     "notifi_matn": "تیتر",
     "notifi_aks": "تیتر",
     "notifi_link": "متن"
}

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

از درون برنامه تون دریافت کنه ، حتما یک تایمر فعال داشته باشید

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

در اکتیویتی مورد نظر اینچنین تایمری باید باشه 

Sub timer1_tick
	
	BUTTON2.Text=PusheJsonService.notifi_matn
	
end sub 

 

موفق باشید.

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 5 ساعت قبل، نورنما گفته است :

 

 

سلام 

این نمونه کدهای زیر درست کار میکنه 

 


#Region Module Attributes
	#StartAtBoot: False
	#ExcludeFromLibrary: True
#End Region

'Service module

Sub Process_Globals
Dim PusheUtil As PusheB4AUtil
Dim notifi_matn As String 
Dim notifi_aks As String 
Dim notifi_link As String 

End Sub

'{
'     "notifi_matn": "تیتر",
'     "notifi_aks": "تیتر",
'     "notifi_link": "متن"
'}


Sub Service_Create
	
End Sub

Sub Service_Start (StartingIntent As Intent)
	Select StartingIntent.Action
		Case "com.google.android.c2dm.intent.RECEIVE" 
			MessageArrived(StartingIntent)
	End Select
End Sub

Sub MessageArrived (pIntent As Intent)
	Dim JsonMsg As String

	JsonMsg = PusheUtil.getPusheJsonMsg(pIntent)
	If JsonMsg <> "" Then
	  'add your code here to deal with JsonMsg
	      Log("Json message received: " & JsonMsg)
	       processJson(JsonMsg)

	End If
End Sub

Sub processJson(jsonStr As String)
	Dim json1 As JSONParser
	Dim data As Map
	

  	json1.Initialize(jsonStr)
  	Try
	  	data = json1.NextObject
		
		 notifi_matn = data.Get("notifi_matn")
		 notifi_aks = data.Get("notifi_aks")
		 notifi_link = data.Get("notifi_link")
	
		ToastMessageShow("بروز رسانی از مرکز" , True)
  ToastMessageShow("notifi_aks"&notifi_aks&"notifi_matn"&notifi_matn&"notifi_link"&notifi_link,True)
  
  Catch
	Log(LastException)

  End Try
  
 
End Sub

Sub Service_Destroy

End Sub

مدل جیسونتون برای پوشه هم برای این کدها، باید اینطوری باشه :


{
     "notifi_matn": "تیتر",
     "notifi_aks": "تیتر",
     "notifi_link": "متن"
}

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

از درون برنامه تون دریافت کنه ، حتما یک تایمر فعال داشته باشید

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


در اکتیویتی مورد نظر اینچنین تایمری باید باشه 

Sub timer1_tick
	
	BUTTON2.Text=PusheJsonService.notifi_matn
	
end sub 

 

موفق باشید.

خیلی ممنون

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

توی کد

If JsonMsg <> "" Then

  گیر میکنه

چونه پیغام خالیه بقیه کدهارو اجرا نمیکنه

 

تایمر هم متوجه نشدم باید کجا بذارم:unknown:

توی کدهای سرویس باید بذارم؟

چون من میخام با فرستادن جیسون، مقادیر توی دیتابیس ذخیره بشه، نیازی به نمایش دادنشون توی اکتیویتی خاصی نیستم.

 

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


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

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

فقط اون چیزی که به خاطرم میاد ،توی Sub processJson نباید هیچ فعالیتی جز مقدار دهی به متغییر ها انجام بشه ، 

راه حلی که برایش داشتم تنها این بودکه مقادیر جیسون رو داخل متغییرها انتقال میدادم و متغییرها رو در Sub Process_Globals قرار میدادم 

بعد در متن برنامه در اکتیویتی دلخواه فعالیت دلخواهمو با متغییرها انجام میدادم 

شما هم فعالیت ذخیره متغییرها در دیتابیس رو به یه بخش مناسب دیگه در برنامه تون  انتقال بدین وصرفا در Sub processJson مقادیر رو درمتغییرها ذخیره نمایید.

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

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

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 9 ساعت قبل، نورنما گفته است :

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

فقط اون چیزی که به خاطرم میاد ،توی Sub processJson نباید هیچ فعالیتی جز مقدار دهی به متغییر ها انجام بشه ، 

راه حلی که برایش داشتم تنها این بودکه مقادیر جیسون رو داخل متغییرها انتقال میدادم و متغییرها رو در Sub Process_Globals قرار میدادم 

بعد در متن برنامه در اکتیویتی دلخواه فعالیت دلخواهمو با متغییرها انجام میدادم 

شما هم فعالیت ذخیره متغییرها در دیتابیس رو به یه بخش مناسب دیگه در برنامه تون  انتقال بدین وصرفا در Sub processJson مقادیر رو درمتغییرها ذخیره نمایید.

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

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

 

امتحان کردم جواب نداد

کدها اصلا به Sub processJson نمیرسه

پیام خالی ارسال میشه

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 55 دقیقه قبل، mahdi0000 گفته است :

امتحان کردم جواب نداد

کدها اصلا به Sub processJson نمیرسه

پیام خالی ارسال میشه

کدهاتونو موقتا کنار بگذارید

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

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

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

 

اگر نه پیامها رو درست دریافت کرد نشان میده چندتا کدی که کدهای شما بامال بنده متفاوته باعث این مسئله شده ،مثلا کدهای موجود در #Region Module Attributes

 

موفق باشید

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 3 ساعت قبل، نورنما گفته است :

کدهاتونو موقتا کنار بگذارید

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

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

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

 

اگر نه پیامها رو درست دریافت کرد نشان میده چندتا کدی که کدهای شما بامال بنده متفاوته باعث این مسئله شده ،مثلا کدهای موجود در #Region Module Attributes

 

موفق باشید

ممنون

میشه نسخه jdk  و android.jar که باش پروژه رو اجرا گرفتید رو بگید؟

اگه امکان دارید کدهای مانیفیست مربوط به پوشه و دریافت جیسون رو هم بذارید.♥

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1397/02/27, 18:13:00، mahdi0000 گفته است :

ممنون

میشه نسخه jdk  و android.jar که باش پروژه رو اجرا گرفتید رو بگید؟

اگه امکان دارید کدهای مانیفیست مربوط به پوشه و دریافت جیسون رو هم بذارید.♥

سلام

نسخه jdk1.8.0_152

android-27\android.jar

کدهای دریافت  جیسون ازمانیفیست اینه :

add_to_manifest.rar

 

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

 

* ضمنا PACKAGE_NAME برنامه تون حتما باید همه حروفش  حروف کوچک انگلیسی باشه .

 

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


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

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری