-
تعداد ارسال ها
4,156 -
تاریخ عضویت
-
آخرین بازدید
-
روز های برد
835
نوع محتوا
نمایه ها
فروشگاه
تالارهای گفتگو
بخش دریافت
تمامی مطالب نوشته شده توسط محمدرضا شاهپیری
-
تاپیک پشتیبانی کتابخانه PersianRetrofit
محمدرضا شاهپیری پاسخی ارسال کرد برای یک موضوع در مرتبط با فروشگاه
با سلام خدمت عزیزان برنامه نویس پروژه ای که مدت خیلی طولانی هست درگیرش بودیم خدا رو شکر به نتیجه رسید و به نسخه پایدار رسید. بارها مکانیزم پروژه عوض شد تا راحت ترین و ساده ترین تجربه کاربری برای دوستان به وجود بیاد و دیگه درگیر پیچیدگی های جاوا و کدهای پس زمینه نشید. برسیم سراغ کتابخونه Retrofit یک کتابخانهی فوقلاده قوی اندرویدی برای کار با وب سرویس هستش. به خاطر استفاده از annotation و interface خیلی سریع راه اندازی میشه و امکانات خیلی زیادی بهتون میده. خب دیگه چونه بسسه بریم سراغ آموزش. 1: راه اندازی Dim pRetrofit As PersianRetrofit pRetrofit.Initialize("retrofit").baseUrl("http://192.168.129.115:8000/").addConverterFactory _ .addInterceptor.addAuthenticator.build متد addConverterFactory برای تبدیل کلاس جاوا به جیسون هست. به راحتی میتونید کلاس بفرستید به سرور متد addInterceptor برای اینه که بخواین به صورت اتوماتیک به همه ریکوئستها یه کانفیگ رو ست کنید. مثلا میخواین تو همه ریکوئستها هدر Authorization بفرستید. به شکل زیر میشه Private Sub retrofit_intercept(request As Request) request.addHeader("Authorization","Bearer "&accessToken) End Sub متد addAuthenticator برای احراز هویت هست و به طور کلی برای رفرش کردن توکن هست. زمانی که ارور 401 (Unauthorized) متد زیر اجرا میشه و شما باید توکن جدید بگیرید و به ریکوئست پاس بدید Private Sub retrofit_authenticate As Map Dim token As String= getAccessToken(uc.RefreshToken) Dim map As Map map.Initialize map.Put("Authorization","Bearer "&token) Return map End Sub 2: استفاده از متدها به طور کلی برای ارسال درخواست یک کلاس از نوع RequestBuilder باید ساخته بشه و به شکل زیر راه اندازی بشه GET Dim queries As Map:queries.Initialize queries.Put("key1","value1") Dim requestBuilder As RequestBuilder requestBuilder.setMethod(requestBuilder.GET) _ .setEndpoint("public/v2/users").setQueries(queries) POST Dim user As User user.Initialize user.username=username user.password=password Dim requestBuilder As RequestBuilder requestBuilder.setMethod(requestBuilder.POST).setBody(user).setEndpoint("api/token/") MULTIPART Dim imbl As List imbl.Initialize imbl.Add(MultipartUtils.createPartBody("file","image.png",image)) Dim bm As Map bm.Initialize bm.Put("content",MultipartUtils.creteStringBody("image from persian retrofit")) Dim requestBuilder As RequestBuilder requestBuilder.setMethod(requestBuilder.MULTIPART).setEndpoint("api/upload_image/") _ .setMultipartParts(imbl).setMultipartParams(bm) 3: اجرای درخواست برای ارسال و اجرای درخواست به دوصورت میتونیم عمل کنیم 1: Async (اجرا در نخ جداگانه) pRetrofit.enqueue(requestBuilder,"login") Wait For retrofit_onResponse(response As Response) If response.isSuccessful Then Dim body As String=response.body Dim JSON As JSONParser JSON.Initialize(body) Dim resp As Map= JSON.NextObject Log(resp.Get("access")) Else Log(response.error) End If 2: Sync (اجرا در نخ اصلی یا همون main ) Dim response As Response=pRetrofit.execute(requestBuilder) If response.isSuccessful Then Dim body As String=response.body Dim JSON As JSONParser JSON.Initialize(body) Dim resp As Map= JSON.NextObject Log(resp.Get("access")) Else Log(response.error) End If آموزش تصویری 1:آموزش کتابخانه PersianRetrofit قسمت ۱ (مقدماتی) https://www.youtube.com/watch?v=t7VrsePFSmU -------------------------------------------------------------------------------------------------------- 2:آموزش کتابخانه PersianRetrofit قسمت ۲ (مقدماتی) https://www.youtube.com/watch?v=6_i4myiSM1s -------------------------------------------------------------------------------------------------------- 3:آموزش کتابخانه PersianRetrofit قسمت ۳(احراز هویت خودکار) https://www.youtube.com/watch?v=YxqCFRS0e1o -------------------------------------------------------------------------------------------------------- 4:آموزش کتابخانه PersianRetrofit قسمت ۴(دانلود) https://www.youtube.com/watch?v=gUfPSHSRDO0 -------------------------------------------------------------------------------------------------------- 5:آموزش کتابخانه PersianRetrofit قسمت ۵(آپلود) https://www.youtube.com/watch?v=W5W6WZikDHs تمام Have fun- 20 پاسخ
-
- 9
-
- Retrofit
- Retrofit B4a
-
(و 3 مورد دیگر)
برچسب زده شده با :
-
دریافتMyketInapp کتابخانه درون پرداخت مایکت
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : کتابخانه ها (Libraries)
خطا مربوط به کتابخونه نیست. میگه محصولات اشتراکی قابل مصرف نیستن. -
دریافتMyketInapp کتابخانه درون پرداخت مایکت
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : کتابخانه ها (Libraries)
یه متد جداگونه بنویسید واسه مصرف کردن خرید بعد توی onIabPurchaseFinished با دستور calsubdelayed اونو صدا بزنید ببینید اکی میشه یا نه نتیجه رو اعلام کنید لطفا -
دریافتMyketInapp کتابخانه درون پرداخت مایکت
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : کتابخانه ها (Libraries)
نسخه قبل مشکل داشت و اینکه روی نسخه ۱.۴ مایکت بود. نسخه فعلی مشکلات رفع شده و به نسخه ۱.۶ که نسخه آخر مایکت هست به روز شده. حتما به نسخه جدید آپدیت کنید -
دریافتMyketInapp کتابخانه درون پرداخت مایکت
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : کتابخانه ها (Libraries)
سلام و درود. کتابخانه به روز شد نسخه جدید رو دریافت کنید -
ویژه: کتابخانه جامع PersianFastNetwork
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
سلام و درود. این موارد توی آموزشها هست Dim post As PostRequest post=prfn.BuildPostQuery("url","tag") post.addParametrs("ke1","value1") post.addParametrs("ke2","value2") post.addParametrs("ke3","value3") -
دریافتPoolakey
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : کتابخانه ها (Libraries)
نسخه بیسیک رو حتما به روز کنید. همینطور sdk و فایلهای extra رو از سایت مرجع بگیرید و سمپلی که گذاشتم رو تست کنید- 93 پاسخ
-
- 1
-
- poolakey
- درون پرداخت
-
(و 1 مورد دیگر)
برچسب زده شده با :
-
دریافتPoolakey
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : کتابخانه ها (Libraries)
سلام. نسخه 3 رو دانلود کنید و همچنین نسخه b4a و sdk هم نسخه آخر باشه فک کنم دیگه نیازی به تغییر sdk نیست- 93 پاسخ
-
- 1
-
- poolakey
- درون پرداخت
-
(و 1 مورد دیگر)
برچسب زده شده با :
-
کتابخانه بسیار کاربردی PersianAlarmManager (**ویژه**)
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
از منوی بالای انجمن قسمت فروشگاه و مدیریت خرید دانلود کنید- 79 پاسخ
-
- PersianAlarmManager
- alarm
-
(و 2 مورد دیگر)
برچسب زده شده با :
-
ویژه: کتابخانه جامع PersianFastNetwork
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
این کتابخونه به زودی با کتابخوته retrofit جایگزین میشه که به مراتب قدرتمندتره و امکاناتش بیشتره. -
ویژه: کتابخانه جامع PersianFastNetwork
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
سلام و درود. از wait For استفاده نکنید. متدهای success و error رو به صورت ایونت پیاده کنید. تایم اوت رو هم بالا بزارید یک دیقه معمولا میزارن -
کتابخانه AriaToast برای B4A (توست حرفه ای و متریال همراه با انیمیشن)
محمدرضا شاهپیری پاسخی برای امین شاهدی ارسال کرد در موضوع : مرتبط با فروشگاه
به جای کد زیر toast.requestDrawPermission از روش زیر استفاده کنید. اول متد زیر رو به اکتیویتی اضافه کنید #if java import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.provider.Settings; public void requestDrawPermission() { Context context = BA.applicationContext; if (Build.VERSION.SDK_INT > 23 && !Settings.canDrawOverlays(context)) { Intent intent = new Intent( Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + context.getPackageName()) ); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } } #end if حالا کتابخونه javaobject رو تیک بزنید و به شکل زیر متد رو صدا بزنید Dim jo As JavaObject jo.InitializeContext.RunMethod("requestDrawPermission",Null)- 45 پاسخ
-
- 2
-
کتابخانه AriaToast برای B4A (توست حرفه ای و متریال همراه با انیمیشن)
محمدرضا شاهپیری پاسخی برای امین شاهدی ارسال کرد در موضوع : مرتبط با فروشگاه
شما متد Build رو صدا نزدین. قبل از نمایش باید این متد رو صدا بزنید که ویوها ساخته بشه. کدتون به شکل زیر باید باشه toast.Initialize("toast").Title("test").Icon(LoadBitmap(File.DirAssets,"caution1.png")).Build.Show قبل از همه چیز هم باید متد زیر رو صدا بزنید و دسترسی ترسیم رو بگیرید toast.requestDrawPermission- 45 پاسخ
-
- 1
-
کتابخانه AriaToast برای B4A (توست حرفه ای و متریال همراه با انیمیشن)
محمدرضا شاهپیری پاسخی برای امین شاهدی ارسال کرد در موضوع : مرتبط با فروشگاه
سلام. چه خطایی دریافت میکنید؟ -
کتابخانه PersianRecyclerView ***(نسخه جدید)***
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
آخرین نسخه موجود 5.11 هست از پنل دانلود و جایگزین کنید- 612 پاسخ
-
- 1
-
کتابخانه PersianRecyclerView ***(نسخه جدید)***
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
سلام و درود. از اونجایی که DsTabLayout از نسخه ساپورت استفاده میکنه و کتابخونه قدیمی و منسوخ شده هست و ریسایکلر ویو نسخه androidX هست احتمال اینکه تداخل داشته باشن خیلی زیاده. من که اصلا نتونستم از DsTabLayout استفاده کنم چون خطا میده و کامپایل نمیشه. اما اگه تداخل نداشته باشن به نظرم میتونید با هم استفاده کنید. به دوتا متد زیر توجه کنید Private Sub prrecycler_onScrollStateChanged(newState As Int) If newState==prRecycler.SCROLL_STATE_IDLE Then If prRecycler.AdapterPosition<>-1 Then dsTabLayout.SelectTab(prRecycler.AdapterPosition) End If End If End Sub Private Sub dstab_TabSelected(Index As Int, SelectedTab As String, Tag As Object) prRecycler.scrollToPosition(Index) End Sub درمورد سوال دوم هم که عرض شد. متد رو باید مستقیم از خود ریسایکلر صدا بزنید prRecycler.disableItemChangeAnimation- 612 پاسخ
-
- 1
-
عدم دریافت کتابخانه alarmmanager بیسیک فور اندروید
محمدرضا شاهپیری پاسخی برای Hosein z ارسال کرد در موضوع : مرتبط با فروشگاه
سلام ودرود. از منوی بالای انجمن قسمت فروشگاه مدیریت خرید رو انتخاب کنید -
سلام به همه برنامه نویسای عزیز. بعد مدتها یه آموزش بزاریم کیف کنیم همونطور که مطلع هستید بازار خیلی وقته درون پرداخت رو با پولکی انجام میده و این کتابخونه مخصوص کاتلین هست و به راحتی نمیتونید اونو مستقیم توی جاوا استفاده کنید. برا همین یه کلاس واسط که به اصطلاح از دیزاین پترن پ * ر * و * ک *س * ی استفاده شده برای دوستان آماده کردیم که راحت بتونن اونو توی جاوا استفاده کنن. دقت کنید که حتما باید کاتلین توی پروژه ست شده باشه. کلاس کاتلین زیر رو به پروژه اضافه کنید و اسمشو PoolakeyWrapper بزارید. package com.example.myapplication import android.content.Context import androidx.activity.result.ActivityResultRegistry import ir.cafebazaar.poolakey.Connection import ir.cafebazaar.poolakey.Payment import ir.cafebazaar.poolakey.config.PaymentConfiguration import ir.cafebazaar.poolakey.config.SecurityCheck import ir.cafebazaar.poolakey.entity.PurchaseInfo import ir.cafebazaar.poolakey.request.PurchaseRequest /** * Created by Mohamadreza Shahpiri on 6/18/2023. * Answercenter.ir *************************************************** */ class PoolakeyWrapper( publicKey: String, context: Context, ) { private val securityCheck = SecurityCheck.Enable(rsaPublicKey = publicKey) private val paymentConfig = PaymentConfiguration(localSecurityCheck = securityCheck) private val payment = Payment(context = context.applicationContext, config = paymentConfig) private var connection:Connection?=null fun connect(connectionCallback: ConnectionCallback){ connection=payment.connect { connectionSucceed{ connectionCallback.connectionSucceed() } connectionFailed { connectionCallback.connectionFailed(it) } disconnected { connectionCallback.disconnected() } } } fun purchaseProduct(registry: ActivityResultRegistry,request: PurchaseRequest,purchaseCallback: PurchaseCallback){ payment.purchaseProduct(registry,request){ purchaseFlowBegan { purchaseCallback.purchaseFlowBegan() } failedToBeginFlow { purchaseCallback.failedToBeginFlow(it) } purchaseSucceed { purchaseCallback.purchaseSucceed(it) } purchaseCanceled { purchaseCallback.purchaseCanceled() } purchaseFailed { purchaseCallback.purchaseFailed(it) } } } fun subscribeProduct(registry: ActivityResultRegistry,request: PurchaseRequest,purchaseCallback: PurchaseCallback){ payment.subscribeProduct(registry,request){ purchaseFlowBegan { purchaseCallback.purchaseFlowBegan() } failedToBeginFlow { purchaseCallback.failedToBeginFlow(it) } purchaseSucceed { purchaseCallback.purchaseSucceed(it) } purchaseCanceled { purchaseCallback.purchaseCanceled() } purchaseFailed { purchaseCallback.purchaseFailed(it) } } } fun consumeProduct(purchaseToken: String,consumeCallback: ConsumeCallback){ payment.consumeProduct(purchaseToken){ consumeSucceed { consumeCallback.consumeSucceed() } consumeFailed { consumeCallback.consumeFailed(it) } } } fun getPurchasedProducts(queryCallback: QueryCallback){ payment.getPurchasedProducts { querySucceed { queryCallback.querySucceed(it) } queryFailed { queryCallback.queryFailed(it) } } } fun getSubscribedProducts(queryCallback: QueryCallback){ payment.getSubscribedProducts { querySucceed { queryCallback.querySucceed(it) } queryFailed { queryCallback.queryFailed(it) } } } fun disconnect(){ connection?.disconnect() } interface ConnectionCallback{ fun connectionSucceed() fun connectionFailed(throwable:Throwable) fun disconnected() } interface PurchaseCallback{ fun purchaseFlowBegan() fun failedToBeginFlow(throwable:Throwable) fun purchaseSucceed(info: PurchaseInfo) fun purchaseCanceled() fun purchaseFailed(throwable:Throwable) } interface ConsumeCallback{ fun consumeSucceed() fun consumeFailed(throwable:Throwable) } interface QueryCallback{ fun querySucceed(items:List<PurchaseInfo>) fun queryFailed(throwable:Throwable) } } حالا توی جاوا به شکل زیر ازش استفاده کنید. مثلا برای اینشیالایز. PoolakeyWrapper poolakeyWrapper=new PoolakeyWrapper("publicKey",this); poolakeyWrapper.connect(new PoolakeyWrapper.ConnectionCallback() { @Override public void connectionSucceed() { } @Override public void connectionFailed(@NonNull Throwable throwable) { } @Override public void disconnected() { } }); و برای خرید PurchaseRequest purchaseRequest=new PurchaseRequest( "productId","payload","dynamicPriceToken" ); poolakeyWrapper.purchaseProduct(getActivityResultRegistry(), purchaseRequest, new PoolakeyWrapper.PurchaseCallback() { @Override public void purchaseFlowBegan() { } @Override public void failedToBeginFlow(@NonNull Throwable throwable) { } @Override public void purchaseSucceed(@NonNull PurchaseInfo info) { } @Override public void purchaseCanceled() { } @Override public void purchaseFailed(@NonNull Throwable throwable) { } }); بقیه متدها رو هم به راحتی میتونید استفاده کنید. مانا باشید
-
کتابخانه PersianRecyclerView ***(نسخه جدید)***
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
سلام ودرود. درمورد مشکل اول دستور disableItemChangeAnimation رو تست کنید و در مورد مسأله دوم دستور AdapterPosition- 612 پاسخ
-
- 1
-
کتابخانه PersianParallax
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
- 12 پاسخ
-
- 1
-
کتابخانه PersianParallax
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
سلام و درود. لینک درسته عزیز. پارس پسک پک به حجم فایل گیر میده که باید پلن پولی برای cdn فعال بشه. احتمالا cdn رو ببریم روی کلودفلر یا فایلهای دانلودی رو جابه جا کنیم -
کتابخانه درون پرداخت بازار
محمدرضا شاهپیری پاسخی برای امین شاهدی ارسال کرد در موضوع : مرتبط با فروشگاه
سلام و درود. از منوی فروشگاه مدیریت خرید دانلود کنید. -
کتابخانه PersianRecyclerView ***(نسخه جدید)***
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
سلام و درود. آخرین نسخه بیسیک و sdk رو از سایت مرجع بگیرید و پروژه رو ران کنید -
کتابخانه بسیار کاربردی PersianAlarmManager (**ویژه**)
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
سلام و درود. کتابخونه بروزرسانی شد. نسخه 2.1. از فلگ FLAG_IMMUTABLE باید استفاده کنید- 79 پاسخ
-
- 1
-
- PersianAlarmManager
- alarm
-
(و 2 مورد دیگر)
برچسب زده شده با :
-
کتابخانه PersianRecyclerView ***(نسخه جدید)***
محمدرضا شاهپیری پاسخی برای محمدرضا شاهپیری ارسال کرد در موضوع : مرتبط با فروشگاه
سلام و درود. از خطا مشخصه که کتابخونه ChromCustomTabs داره از پکیجهای قدیمی support استفاده میکنه. باید نسخه به روز کتابخونه رو بگیرید یا اینکه jetifireکنید