رفتن به مطلب

MrMedia

کاربر فعال
  • تعداد ارسال ها

    273
  • تاریخ عضویت

  • روز های برد

    13

تمامی مطالب نوشته شده توسط MrMedia

  1. سلام به دوستان عزیز این آموزش برای امن کردن درون پرداخت کافه بازار با توجه به مستندات خود کافه بازار هستش. اگه نمی دونید api کافه بازار چیه کافیه به لینک زیر یه سر بزنی 😉 https://developers.cafebazaar.ir/fa/guidelines/in-app-billing/api# برای راه اندازی API ابتدا باید یک Client ایجاد کنید. هر Client شامل اطلاعاتی است که از طرف بازار برای شناخته‌شدن یک کاربر API لازم است. برای ساخت Client به پیشخان بازار مراجعه نمایید و از منو تنظیمات، قسمت API توسعه‌دهندگان روی گزینه کلاینت جدید کلیک کنید. در پنجرهٔ باز شده، مقدار مورد نظر خود برای Redirect URI را وارد کنید. این آدرس، مشخص می‌کند که بازار در پاسخ به درخواست اولیه شما برای دریافت Authorization Code، باید پاسخ را به چه آدرسی بفرستد. به عکس زیر توجه کنید: ما آدرس فایل php که برای چک کردن و مصرف خرید کاربران کافه بازار هستش رو درج کردیم (پایین پست فایل رو میزارم) و بعد از زدن دکمه ایجاد کلاینت، کلاینت ایجاد میشه و با عکسی مشابه عکس زیر مواجه میشید. ⚠️برای امنیت برنامه خودم مقادیر رو در عکس مخدوش کردم ⚠️ ✅ خب حالا دو مقدار Client Id و Client Secret رو یکجا کپی کنید چون نیازمون میشه حالا بجای سخت کار می رسیم!! به اینجای کار با خوب دقت کنید در این مرحله در مرورگر خود یک New Tab یا پنجره جدید باز کنید و آدرس زیر را تکمیل کنید: https://pardakht.cafebazaar.ir/devapi/v2/auth/authorize/?response_type=code&access_type=offline&redirect_uri=&client_id= خب چطور باید تکمیلش کنیم؟ ببینید دوستان این همون متد GET هستش شما باید جلوی مساوی هایی که خالی هستش رو پر کنید جلوی redirect_uri همون آدرس فایل php که برای ساخت کلاینت دادیم رو میزاریم (عکس 1) و جلوی client_id هم مقداری که در عکس 2 زیر همون عنوان می بینید رو درج می کنیم. پس با این حساب آدرس ما میشه این: https://pardakht.cafebazaar.ir/devapi/v2/auth/authorize/?response_type=code&access_type=offline&redirect_uri=https://website.ir/bazaar.php&client_id=JFNF85BFPHKSVBJ67CNNDMMSUYHWNKRLLJDGRK خب حالا آدرس رو در مرورگر وارد کنید و Enter را بزنید تا صفحه لود شود بعد از لود شدن صفحه با چنین صفحه ای مواجه می شوید: حالا کافیه روی تایید کلیک کنید تا به آدرس فایل php که برای ساخت کلاینت استفاده کردیم (عکس 1) ارجاع داده بشیم. خب به آدرس مرورگر نگاه کنید آدرس مرورگر شما چیزی شبیه به این هستش: https://website.ir/bazaar.php?code=GWObRK06KHLr8pCQzDXJ9hcDdSC3eV حالا مقداری که جلوی =code هستش رو یجا کپی کنید خب تا اینجا ما 3 تا مقدارو گفتیم یجا کپی کنید، یادتونه؟؟؟ اون مقادیر اینا بودن: Client Id و Client Secret و code اون مقادیر الان به کار میاد: باید اونا رو در کد زیر جایگزین کنی <?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://pardakht.cafebazaar.ir/devapi/v2/auth/token/", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => array( 'grant_type' => 'authorization_code', 'code' => 'کد', 'client_id' => 'کلاینت آیدی', 'client_secret' => 'کلاینت سکرت', 'redirect_uri' => 'آدرس فایل پی اچ پی' ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } خب فایل رو با فرمت php ذخیره کن و در هاستت آپلود کن و در مرورگر آدرسشو وارد و Enter رو بزن تا صفحه بارگذاری بشه این کار Postman خیلی راحت تر هستش ولی گفتم شاید برخی از دوستان آشنایی ندارند با این روش جلو میریم و اگه با Postman آشنایی داری با کد curl زیر انجامش بده: curl --location --request POST 'https://pardakht.cafebazaar.ir/devapi/v2/auth/token/' \ --form 'grant_type="authorization_code"' \ --form 'code="کد"' \ --form 'client_id="کلاینت آیدی"' \ --form 'client_secret="کلاینت سکرت"' \ --form 'redirect_uri="آدرس فایل پی اچ پی"' خب حالا برگردیم به مرورگرمون که بارگذاری شده نتیجه به صورت متنی در قالب JSON دریافت می‌شه که حاوی access token ، زمان انقضا ، نوع توکن مورد‌نظر، scope و refresh token هستش. ما از این مقادیر جیسون فقط به refresh token نیاز داریم پس یجا کپی کن. از این جا به بعد دیگه آسون میشه 🥰 خب یادتونه یک آدرس برای ساخت کلاینت وارد کرده بودیم؟ (عکس 1) که از آدرس https://website.ir/bazaar.php استفاده کرده بودیم؟ این کد class که باید درون این فایل قرار بگیره: <?php /** * Class cafebazaar.ir * Author: milad kantoori */ define("clientId", "کلاینت آیدی"); define("clientSecret", "کلاینت سکرت"); define("refreshToken", "رفرش توکن"); class cafebazaar { private $access_token = ''; public function __construct() { $this->refreshTokenRequest(); } function checkPurchase($package_name, $product_id, $purchase_token, $userid) { $url = "https://pardakht.cafebazaar.ir/devapi/v2/api/validate/$package_name/inapp/$product_id/purchases/$purchase_token/?access_token=" . $this->access_token; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FAILONERROR, true); $response = curl_exec($ch); curl_close($ch); $responseData = json_decode($response, true); if (isset($responseData['consumptionState'])) { if ($responseData['consumptionState'] == 1 && $responseData['purchaseState'] == 0) { if ($this->consumePurchase($package_name, $purchase_token) == true && $responseData['developerPayload'] == $userid) { return true; } } } return false; } private function consumePurchase($package_name, $purchase_token) { $url = "https://pardakht.cafebazaar.ir/devapi/v2/api/consume/$package_name/purchases/?access_token=" . $this->access_token; $data = [ 'token' => $purchase_token ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode === 200) { return true; } else { return false; } } private function refreshTokenRequest() { $url = "https://pardakht.cafebazaar.ir/devapi/v2/auth/token/"; $data = [ 'grant_type' => 'refresh_token', 'client_id' => clientId, 'client_secret' => clientSecret, 'refresh_token' => refreshToken ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $responseData = json_decode($response, true); if (isset($responseData['access_token'])) { $this->access_token = $responseData['access_token']; } curl_close($ch); } } ?> خب در خط 7 و 8 و 9 مقادیری که گفتم کپی کن رو جایگزین کنید و تمام 🥳 دیگه می مونه فقط نحوه استفاده از این کلاس ولی چندتا نکنه هست که باید بهتون بگم: چرا بصورت class نوشتم کدرو؟ چون می تونیم در همه پروژه هامون ازش استفاده کنیم و نیازی به کپی فایل و دستکاری و... نداره (یکی از مزیت های شی گرائی اینه) چرا مصرف خرید درسمت سرور انجام میشه؟ چون من معتقدم که هیچ کار مهمی نباید برای امنیت در سمت کلاینت (کاربر) انجام بشه و کاربر فقط باید مشاهده کننده باشه!!! خب چطور استفاده کنیم از این کلاس؟؟؟ شما درون فایل php که به اپلیکیشنت وصله کافیه این class رو اینجوری فراخونی کنی: require_once('bazar.php'); $cafebazaar = new cafebazaar(); بعد کافیه هر جایی از کدت خواستی خرید کاربر رو بررسی کنی این کد رو استفاده کنی: $result = $cafebazaar->checkPurchase($_REQUEST['package_name'], $_REQUEST['product_id'], $_REQUEST['purchase_token'], $_REQUEST['userid']); if ($result) { // خرید معتبر است }else{ // خرید جعلی است } خب کد که کاملا مشخص هستش و کافیه شما در جاهایی نوشته شده خرید معتبر و جعلی، کدهای خودت رو بنویسی. حالا نکته آخر که باید سمت اپلیکیشن انجام بدی که مهم هستش پس خوب توجه کن: شما در سمت کاربر یا همون اپلیکیشن باید این موارد رو انجام بدی: 1. حتما و حتما وقتی که از کتابخونه Poolaky یک متغییر PoolakeyPurchaseRequest تعریف کردی از Payload استفاده کن مقدارش رو هم آیدی یکتا کاربر بزار (android_id) 2. موقعی که میخای به سمت سرور درخواست بدی باید موارد زیر رو ارسال کنی: ✅ پکیج نیم ✅ آیدی محصول ✅ توکن خرید ✅ آیدی یکتا کاربر درخواست به صورت GET فرستاده بشه و با کلید های: 🔑 package_name 🔑 product_id 🔑 purchase_token 🔑 userid برای مثال: https://website.ir/api.php?package_name=پکیج_نیم&product_id=آیدی_محصول&purchase_token=توکن_خرید&userid=آیدی_یکتا_کاربر در مثال بالا مواردی که فارسی هستند باید جایگزین شه همه موارد کاملا مشخصه فقط شاید توکن خرید براتون ناآشنا باشه 🤔 بعد از خرید موفق از بازار یک تابع که با اول نام ایونتی که شما موقع تعریف کتابخونه پولکی داشتید فراخونی میشه. ما اینجا فکر میکنیم نام این ایونت یا رویداد رو گذاشته بودیم bazaar پس این تابع بعد از خرید موفق فراخونی میشه: Private Sub bazaar_PurchaseSucceed (PurchaseInfo As PoolakeyPurchaseInfo) PToken = PurchaseInfo.PurchaseToken End Sub در مثال بالا PToken همون مقدار string توکن خرید هستش که باید موقع بررسی خرید ارسال کنیم. دیگه شما از چه کتابخونه ای برای ارسال مقادیر با متد GET استفاده می کنید با خودتونه. میتونی کتابخونه پیشفرض b4a باشه یا کتابخونه ای که خرید کردین 🥰 امیدوارم این آموزش به کارتون بیاد 🤩 و اینکه این فروم مکانی امن و رایگان برای یادگیری هستش، اگه حس میکنی نه تنها این مطلب بلکه مطالب، کتابخونه ها رایگان و... انجمن بهت کمک کرده ممنون میشم به انجمن خودتون از طریق لینک زیر به مبلغ دلخواه کمک کنید. لینک حمایت مالی جهت حفظ و ارتقا سیستم انجمن و ارتقا کتابخانه ها + به روزرسانی و حمایت از تیم برنامه نویسی
  2. من با متد CallSubDelayed2 انجامش دادم و الان عین ساعت کار میکنه. خیلی ممنون از راهنماییتون 🌹
  3. سلام و خسته نباشید. من هم چنان در مشکل دارم و این خطا رو بعد از خرید دریاافت میکنم: main$ResumableSub_myb_onIabPurchaseFinishedresume (java line: 4990) java.lang.NullPointerException: Attempt to read from field 'anywheresoftware.b4a.BA ir.caller.id.main.activityBA' on a null object reference in method 'void ir.caller.id.main$ResumableSub_myb_onIabPurchaseFinished.resume(anywheresoftware.b4a.BA, java.lang.Object[])' at ir.caller.id.main$ResumableSub_myb_onIabPurchaseFinished.resume(main.java:4990) at ir.caller.id.main._myb_oniabpurchasefinished(main.java:4908) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:221) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:205) at com.myketbilling.core.MyketBilling$3.onIabPurchaseFinished(MyketBilling.java:67) at ir.myket.billingclient.util.IAB$1.onReceiveResult(IAB.java:115) at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:210) at android.os.Looper.loop(Looper.java:299) at android.app.ActivityThread.main(ActivityThread.java:8319) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1038) main$ResumableSub_myb_onIabPurchaseFinishedresume (java line: 4990) java.lang.NullPointerException: Attempt to read from field 'anywheresoftware.b4a.BA ir.caller.id.main.activityBA' on a null object reference in method 'void ir.caller.id.main$ResumableSub_myb_onIabPurchaseFinished.resume(anywheresoftware.b4a.BA, java.lang.Object[])' at ir.caller.id.main$ResumableSub_myb_onIabPurchaseFinished.resume(main.java:4990) at ir.caller.id.main._myb_oniabpurchasefinished(main.java:4908) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:221) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:205) at com.myketbilling.core.MyketBilling$3.onIabPurchaseFinished(MyketBilling.java:67) at ir.myket.billingclient.util.IAB$1.onReceiveResult(IAB.java:115) at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:210) at android.os.Looper.loop(Looper.java:299) at android.app.ActivityThread.main(ActivityThread.java:8319) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1038) در حال دیباگ اصلا مشکلی برای خرید و خرج کردن ندارم ولی در حالت Release و Release (obfuscated) خطا بالا رو میده
  4. سلام و ممنون بابت کتابخونه خوبتون من برای مصرف خرید مشکل دارم و از روش هایی که در این پست گفتید هم استفاده کردم. ولی به خطا میخورم و به محض اجرای ساب Private Sub myket_onIabPurchaseFinished(result As IabResult,purchase As Purchase) به خطای زیر بر میخورم. ** Activity (main) Pause, UserClosed = false ** Sleep not resumed (context is paused): b4a.example3.b4xloadingindicator$ResumableSub_MainLoop main$ResumableSub_myket_onIabPurchaseFinishedresume (java line: 5006) java.lang.NullPointerException: Attempt to read from field 'anywheresoftware.b4a.BA ir.caller.id.main.activityBA' on a null object reference in method 'void ir.caller.id.main$ResumableSub_myket_onIabPurchaseFinished.resume(anywheresoftware.b4a.BA, java.lang.Object[])' at ir.caller.id.main$ResumableSub_myket_onIabPurchaseFinished.resume(main.java:5006) at ir.caller.id.main._myket_oniabpurchasefinished(main.java:4908) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:221) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:205) at com.myketbilling.core.MyketBilling$3.onIabPurchaseFinished(MyketBilling.java:67) at ir.myket.billingclient.util.IAB$1.onReceiveResult(IAB.java:115) at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:210) at android.os.Looper.loop(Looper.java:299) at android.app.ActivityThread.main(ActivityThread.java:8319) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1038) main$ResumableSub_myket_onIabPurchaseFinishedresume (java line: 5006) java.lang.NullPointerException: Attempt to read from field 'anywheresoftware.b4a.BA ir.caller.id.main.activityBA' on a null object reference in method 'void ir.caller.id.main$ResumableSub_myket_onIabPurchaseFinished.resume(anywheresoftware.b4a.BA, java.lang.Object[])' at ir.caller.id.main$ResumableSub_myket_onIabPurchaseFinished.resume(main.java:5006) at ir.caller.id.main._myket_oniabpurchasefinished(main.java:4908) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:221) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:205) at com.myketbilling.core.MyketBilling$3.onIabPurchaseFinished(MyketBilling.java:67) at ir.myket.billingclient.util.IAB$1.onReceiveResult(IAB.java:115) at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:210) at android.os.Looper.loop(Looper.java:299) at android.app.ActivityThread.main(ActivityThread.java:8319) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1038) و جوری که متوجه شدم مقدار خالی به این ساب بر میگرده، به خط 4 توجه کنید. مورد بعدی اینکه این کتابخونه با sdk 31 مشکل نداره ولی من از sdk 33 استفاده میکنم و از اونجایی که استورها دائما sdk تارگت براشون مهم هستش و میخان که برنامه رو آپدیت کنیم ممنون میشم کتابخونه رو آپدیت کنید. در ضمن اگه زیر پستتون هم از لینک حامی باش یا پرداخت آزاد برای کمک مالی استفاده کنید خیلی خوب میشه تا همه بتونن در صورت تمایل به پروژه کمک کنن
  5. چرا تو حالت wait for کار نمیکنه؟ بعدا اضافه میشه به کتابخونه؟
  6. سلام من از آخرین نسخه کتابخونه استفاده میکنم ولی متد WithTimeOut برام کار نمی کنه کدم هم اینه Dim fn As FastNetSetup Dim Request As PersianFastNetwork fn.SetupFastNet.WithSSL.WithTLS.WithCookieManager.WithTimeOut(10000).Build Request.initialize("fn") GetRequest = Request.BuildGetQuery("sample_url","sample_tag") GetRequest.addHeader("sample_header")).executRequest wait For fn_onSucsess(value As String , Tag As Object ) 'my code... Sub fn_onError(Error As ResponseError , Tag As Object) Log(Error.ErrorMsage) End Sub این مشکل باعث شده لودینگ برنامه که قبل درخواست فرستادن نشون میدم و تایم اوت کار نمیکنه نمی تونم مخفیش کنم و لودینگ دائما بچرخه و همین باعث شده کافه بازار به برنامم اشکال بگیره
  7. چیزی که برام مهمه اینکه اپلیکیشن فریز نشه که متاسفانه میشه شما کدوم روشی رو پیشنهاد میکنید که فریز اتفاق نیوفته؟ من خطا هایی که در برنامه رخ داده رو در قالب متن به سرور پست میکنم و نمی تونم از پروگرس دیالوگ استفاده کنم و اگه ممکنه درباره asynctask کمی توضیح بدین اگه ممکنه با مثال، چون از این گزینه تا حالا استفاده نکردم ممنون
  8. آقای شاهپیری من با نسخه 5.50 کتابخونه با متد PostRequest یک مقدار متنی رو به سرور ارسال میکنم، مشکلی در ارسال و دریافت ندارم مقدار متنی که ارسال میشه گاها حجمش 35kb میشه اما در هنگام ارسال اپلیکیشن چند ثانیه فریز میشه مشکل به نظرتون از کجاست؟
  9. سلام آقای شاهپیری من از نسخه 5.50 کتابخونه شما در یکی از پروژه هام استفاده میکنم و بخاطر اینکه تست کلی اپم به خاطر عمل کرد حساسش خیلی زمان میبره از بروز کردن کتابخونه صرف نظر کردم و تا حالا مشکلی نداشتم حالا میخوام یه آپدیت به برنامه بدم و در آپلود فایل مشکل دارم کدهام اینه: Dim per As PersianFastNetwork per.initialize("con").WithSSL.WithTLS.WithCookieManager.Build Dim postquery As UploadRequest = per.BuildUploadQuery("https://mysite.com/upload.php","up") postquery.addMultipartFile("note.db",File.DirRootExternal & "/myapp") postquery.startUploadAsString Private Sub up_onStringUploadOK(response As String , Tag As String) ToastMessageShow("ارسال شد",False) End Sub Private Sub up_onStringUploadError(Error As ResponseError , Tag As String) ToastMessageShow("ارسال نشد !",True) End Sub من تا حالا از این متد استفاده نکردم و از جستجو ها هم چیزی دستگیرم نشد اگه ممکنه منو راهنمایی کنید و کد های php سمت سرور رو هم برای عملکرد درست برنامه در اختیارم بذارید
  10. سلام کسی آخرین نسخه FirebaseAdmob یعنی ورژن 1.6 رو داره آپلود کنم برام؟ آدرس در سایت مرجع: https://www.b4x.com/android/forum/threads/firebaseadmob-v1-6.108552/ اگه کسی دسترسی داره ممنون میشم در اختیارم بزاره
  11. سلام من نیاز به آخرین نسخه appcompat یعنی نسخه 4 دارملینکش https://www.b4x.com/android/forum/attachments/appcompatlib4_00-zip.74025/کسی این نسخه رو داره آپلود کنه یا دسترسی به سایت مرجع داشته باشه؟ممنون میشم
  12. ** توضیحات تکمیلی اگر سوالی درباره کتابخانه دارید می تونید مطرح کنید تا جواب بدم، اما قبل از پرسیدن سوال حتما ویدئوی کتابخانه را ببینید کد و دیکد کردن متن ها، url و... با کلید 16 کارکتری که توسط شما انتخاب میشه انجام میگیره و برای سهولت کار ابزار کمکی ویندوز هم به پکیج اضافه شده
  13. MrMedia

    تاپیک ویژه کتابخانه MrNetUtils

    سلام به همگی کتابخانه ای تهیه کردم تحت عنوان MrNetUtils خیلی از مواقع توسعه دهنده ها برای امنیت پرداخت نگرانی دارن و یا برای گرفتن آیدی یکتا گوشی به دلیل محدودیت دسترسی phone در اندروید دچار مشکل می شوند و نگرانی هایی مثل دیکامپایل شدن اپلیکیشن و لو رفتن url های درون اپلیکیشن و... و برای اپلیکیشن نیاز به دیتابیس استان ها و شهر ها دارن و یا لیست کشورها و پیش شماره آنها و یا اطلاعات قبل از ثبت مورد راستی آزمایی قرار بگیرن مثل کد ملی، ایمیل و... خیلی از این مشکلات در این کتابخونه رفع شده... ویدوئوی این کتابخونه را می توانید در زیر مشاهده کنید اگر ویدئوی بالا را نمی توانید مشاهده کنید اینجا کلیک کنید برخی ویژگی های کتابخانه: دیتابیس کشورها + پیش شماره آنها دیتابیس استان ها و شهر ها به دست آوردن آیدی یکتای گوشی بدون نیاز به دسترسی کد و دیکد کردن اطلاعات در اپلیکیشن و سمت سرور + فایل php خواندن اطلاعات از api های json ایجاد user-agent رندوم برای ارسال درخواست به یک url چک کردن یک پروکسی چک کردن بالا بودن وی پی ان پروکسی در گوشی چک کردن وجود یک url چک کردن ایمیل و... * ابزار کمکی برای کد و دیکد کردن متن ها برای ویندوز به پکیج اضافه شد * این کتابخانه دارای مثال کاربردی هم می باشد و فایل php برای کد و دیکد کردن همراه با مثال هم به آن ضمیمه شده است لینک خرید کتابخانه
  14. کد b4a و سمت سرورتون رو بفرستید شاید بتونم راهنمایی کنم
  15. سلام آقای شاهپیری اول از همه خیلی ممنون بابت این کتابخونه عالی و شاهکارتون من یه مشکل داشتم برای ssl هاستم که با دستور WithTLS رفع شد ولی در میان کار به مشکل دیگه ای برخوردم و api سمت سرورم خطایی مبنی بر cookie میداد که اپلیکیشنم از یک جایی جلوتر نمی رفت این مشکلم رو هم با دستور WithCookieManager حل کردم این پست هم جهت تشکر هستش هم می خواستم بدونم WithCookieManager دقیقا چه عملی انجام میده البته از اسمش معلومه برای مدیریت کوکی ها هستش
  16. آقای شاهپیری ممکنه کمی کار با کتابخونه رو بلد نباشم ولی کپی ساب تو ساب چیز نشدی هستش حتی اگه کاربر آماتور باشه مشکلم حل شد موقع ران کردن دیباگر به آخرین لاین اشاره میکرد که خالی بود رفتم و روی همون لاین و DELETE رو زدم درست شد!!!! ممنون از شما
  17. از کد های نمونه شما در پروژه استفاده کردم ولی وقتی کد ها رو paste میکنم این خطا لاگ نمایش داده میشه con_onGetStringErrorListener is not a valid identifier یا Input string was not a correct format. در ضمن اگه من در میان کدهام از wait for برای ساب con_onGetStringOkListener استفاده کنم حتما زمانی که اطلاعات دریافت بشه این ساب اجرا میشه اگه به مشکل بربخوره درخواست حتما ساب دیگه ای اجرا میشه و کد های بعد از wait for اجرا نمیشن، فکری دربارش کردید؟
  18. سلام من از کتابخانه irInterNet استفاده میکنم ولی وقتی که خواستم پروژه رو آپدیت کنم متوجه شدم که کتابخانه با ssl سایت من به مشکل برخورده برای همین این کتابخونه رو خریداری کردم، مثال جامعی ندیدم اگه ممکنه این کد رو تبدیل کنید برام ir.init("ir") ir.AddHeader("User-Agent", "Mozilla/5.0...") ir.get("https://site.com/db.php?name=farhad") wait For ir_Response (Success As Boolean , Res As String,header() As Object) If Success Then ''my code End If سرور من از ssl استفاده میکنه و برام خیلی مهمه که کتابخونه شما بتونه به راحتی بهش وصل بشه و یا در صورت بروز اشکال این کار رو بدون ssl انجام بده ممنون میشم راهنمایی کنید
  19. همین کار رو هم کردم ولی بازم همون ارور رو میده، کیدونم کد خاصی نداره ولی اگه یه نمونه بزارید که چک کم ممنون میشم
  20. سلام من موقع کامپایل این خطا رو دارم: Compiling generated Java code. Error B4A line: 30 fl.initialize javac 1.8.0_25 src\b4a\flash\main.java:336: error: cannot access CameraAccessException _fl.initialize(processBA); ^ class file for android.hardware.camera2.CameraAccessException not found مشکل چیه؟ آیا در مانیفست باید دسترسی هم اضافه کرد؟
  21. آقا پژمان خسته نباشید، من کتابخونه شما رو تهیه کردم کد: <string name="service_name">pnalarmreceiver</string> گزینه pnalarmreceiver برای چی هست؟ بعد دریافت آلارم بالا میاد؟ اگه اینطوریه میشه کلا سرویس رو حذف کرد و سرویس خودم رو جایگزینش کنم؟ البته بوت سرویس رو هم true میزام این امکان هست؟
  22. بله حتما تهیه میکنم سوال من بیشتر از این جهت هستش که اطمینان پیدا کنم که این کتابخونه مشکلات که دارم رو حل میکنه یه سوال دیگه: من میخوام این الارم رو pn.setNewAlarmRepeating(0,60000,dateTime.Now) در سرویسی ست کنم که در مانفیست هم معرفی کردم مشکلی که پیش نمیاد؟
×
×
  • اضافه کردن...