مستندات

راهنمای نصب و استفاده از SDKهای کلاینت و سرور «اینجام» روی پروژه‌ها و پلتفرم‌های مختلف

اینجام چگونه کار می‌کند؟

اینجام یک سرویس Real-Time (بی‌درنگ)، شامل مجموعه‌ای از APIهای مختلف برای انجام اموری همچون: وصل شدن دستگاه به سرور، احراز هویت دستگاه، ارسال موقعیت مکانی دستگاه، دریافت موقعیت مکانی یک یا چند دستگاه بخصوص و مواردی از این قبیل است.
برای سهولت کار، SDKهای سمت کلاینت (اندروید، iOS و وب) مخصوص اینجام برای پلتفرم‌های مختلف به شما توسعه‌دهندگان کمک می‌کنند تا احتیاجی به استفاده مستقیم از این APIها نداشته باشید و رسیدگی به همه نیازها بر عهده SDK باشد و شما در سریع‌ترین زمان ممکن آماده بهره‌گیری از کاربردهای مختلف اینجام باشید.
همچنین علاوه بر SDK‌های سمت کلاینت، می‌توانید از SDKهای سمت سرور (PHP و Python و Go و Java) اینجام نیز بهره برده و اموری همچون: تولید شناسه کاربر، افزودن ردیاب‌ها و وب‌هوک‌ها را بر عهده آن بگذارید.


وظایف SDK کلاینت:

۱. مدیریت برقراری اتصال به سرور اینجام

۲. احراز هویت خودکار

۳. محاسبه و به‌دست آوردن موقعیت مکانی فعلی دستگاه (با گرفتن تایید دسترسی از کاربر)

۴. ارسال و دریافت بی‌درنگ موقعیت مکانی

۵. ارسال و دریافت بی‌درنگ اطلاعات دلخواه


وظایف SDK سرور:

۱. احراز هویت

۲. تولید شناسه منحصربه‌فرد کاربر (Physical ID)

۳. افزودن ردیاب

۴. تعیین وضعیت ردیاب

۵. افزودن وب‌هوک

۶. حذف وب‌هوک


نحوه عملکرد

هر کاربر اپلیکیشن شما در اینجام یک Channel به حساب می آید و یک شناسه منحصر به فرد دارد که این شناسه توسط اپلیکیشن شما به اینجام معرفی می‌شود. شما به عنوان صاحب اپلیکیشن می‌بایست لیستی از این شناسه‌ها - که معمولا خود شما سمت سرورتان آن را تولید می‌کنید - را پیش خود نگه داشته باشید تا بدانید هر شناسه به کدام کاربرتان مربوط می‌شود (ما در این مستندات از این شناسه با نام Physical ID یاد می‌کنیم).

شما از این شناسه برای معرفی و یا یافتن کاربران خود در اینجام استفاده می‌کنید و بنابراین هرگاه کاربر A بخواهد اطلاعات درحال انتشار کاربر B را دریافت کند، با دادن نام کانال یا همان Physical ID کاربر B به اینجام (دنبال کردن کاربر B)، دریافت بی‌درنگ اطلاعات او برای کاربر A آغاز می‌شود.



دریافت و نصب

در ادامه روش‌های موجود برای دریافت و نصب SDKهای اینجام در سمت کلاینت و سرور را روی پلتفرم‌ها و پروژه‌های گوناگون، به شما معرفی می‌کنیم:

کلاینت

وب

برای دریافت اینجام و استفاده از آن در وب می‌توانید SDK مخصوص را از گیت‌هاب Clone بگیرید یا از طریق NPM یا CDN آن را به پروژه خود اضافه کنید.


دریافت مستقیم از Github


یا:


        git clone git@github.com:injamio/web-sdk.git
    

استفاده سریع از CDN:


        <script async src="https://cdn.jsdelivr.net/npm/injam-sdk/injam-sdk.js"></script>
    

دریافت با استفاده از NPM:


        npm i injam-sdk
    

استفاده در مرورگر


        <script async src="./injam-sdk.js"></script>
    

وارد کردن به عنوان ماژول NodeJS


        var injamSdk = require('injam-sdk')
    

اندروید

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


دریافت مستقیم از Github


برای وارد کردن به پروژه مسیر زیر را در اندروید استودیو دنبال کنید:


        File -> New -> New Module -> Import .jar/.aar Package
    

iOS

به زودی...


سرور

API

اگر SDK سمت سرور مناسب خود را پیدا نمی‌کنید یا به هر دلیلی می‌خواهید مستقیما API‌های اینجام را مورد استفاده قرار دهید، مستندات آن را همراه با جزییات کامل و مثال‌های کمکی مطالعه کنید:


مشاهده مستندات


به هرحال توصیه می‌شود که SDK هماهنگ با نرم‌افزار Backend خود را از موارد پایین پیدا و استفاده کنید تا با کمترین (تقریبا صفر) توسعه و کدنویسی و دغدغه‌های فنی به نتیجه مورد نظر برسید.

PHP

Laravel ~ نسخه ۵.۵ و بالاتر

نصب از طریق Composer:


        composer require injamio/injam-laravel-package
    

یا:

دریافت مستقیم از Github


فایل کانفیگ اینجام را ایجاد کنید:


        php artisan vendor:publish --provider="Injamio\InjamLaravelPackage\ServiceProvider" --tag="config"
    

پکیج اینجام را در کنترلر خود Use کنید:


        use Injamio\InjamLaravelPackage\InjamLaravelPackage;
    


وصل شدن و احراز هویت

اینجام در سمت کلاینت به گونه‌ای طراحی شده است تا هویت هر کاربر در سریع‌ترین زمان ممکن بررسی و بدون نیاز به ثبت (Signup) قبلی دستگاه آن، به سرویس متصل شود. از آنجایی که تمامی امور مربوط به ورود و احراز هویت دستگاه توسط SDK انجام می‌گیرد، شما به عنوان توسعه‌دهنده، تنها کافی‌ست اطلاعات ورود دستگاه را -که در این مستندات از آن با نام Credentials یاد می‌کنیم- مشخص کرده و باقی امور را به دست SDK بسپارید.


اطلاعات هویتی یا همان Credentials در سمت کلاینت شامل ۳ مورد و در سمت سرور شامل ۱ مورد می‌شود:


application_key (کلاینت)

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


physical_id (کلاینت)

شناسه منحصربه‌فرد (Unique) کاربر که سرور اینجام آن را تولید می‌کند و می‌توانید به هریک از کاربران خود یک Physical ID اختصاص دهید و از آن در سمت کلاینت برای احراز هویت کاربر استفاده کنید و هر نوع پیگیری بعدی مانند دریافت یا ارسال اطلاعاتی مشخص به هریک از کاربران خود را با این شناسه انجام دهید. این شناسه درواقع همان نام Channel به حساب می‌آید.

برای جزییات بیشتر در مورد تولید Physical ID اینجا را بخوانید.


channels (کلاینت)

آرایه‌ای از Physical IDهای دستگاه‌هایی که قصد دارید بلافاصله پس از وصل شدن، برای دریافت اطلاعات آن‌ها را Subscribe کنید. این مورد اختیاری است و هنگامی که تنها قصد دارید اتصال به سرور برقرار گردد، می‌توانید آن را به شکل یک آرایه خالی بگذارید.


api_key (سرور)

کلید API برای استفاده در SDK سمت سرور است که وصل شدن و احراز هویت صحیح را برای شما امکان‌پذیر می‌کند و آن را در پنل اینجام بعد از ثبت اپلیکیشن خواهید داشت. برای یافتن API Key اپلیکیشن خود اینجا کلیک کنید.


کلاینت

نمونه‌های تعریف Credentials و وصل شدن به اینجام:


وب

یک Object شامل اطلاعات Credentials بسازید:


        var credentials = {
            application_key: 'd144dd40-f7ad-11e7-9660-61d5f7592493'
            physical_id: 'qwerty',
            channels: ['zxcvbn', 'asdfgh'], // Optional. can be empty
        }
    

یک نمونه از کلاس Injam بسازید و آبجکت Credentials را به آن پاس بدهید:


        var injam = new Injam(credentials)
    

حالا کافی است متد connect() را فراخوانی کنید تا اتصال به «اینجام» برقرار گردد:


        injam.connect()
    

اندروید

در ابتدا باید Credentials را معرفی نمایید.


        Credentials(String PHYSICAL_ID, String APPLICATION_KEY, List CHANNELS)
    

مثال:


        Credentials credentials = new Credentials("qwerty", "d144dd40-f7ad-11e7-9660-61d5f7592493", new String[]{"zxcvbn", "asdfgh"});
    

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


        public InjamNotification(String contentTitle, String tickerText, String contentText, int smallIconResId, String physicalId, String name, String description, int lightColor, boolean useLights, boolean useVibration, long[] vibrationPattern)
    

مثال:


        InjamNotification notification = new InjamNotification("Content Title", "I'm Ticker Text", "Content Text", R.drawable.ic_notifications_black_24dp, "qwerty", "Name", "Description...", Color.RED, true, false, new long[]{});
    

یک نمونه از کلاس Injam بسازید و به آن آبجکت‌های Activity فعلی، Credentials، Notification و IServices که برای دسترسی به ایونت‌های اینجام استفاده می‌شود را پاس دهید:


        public Injam(Activity activity, Credentials credentials, InjamNotification notification, IService listener)
    

مثال:


        injam = new Injam(this, credentials, notification, new IService() {});
    

حالا هر زمان که متد connect() را صدا کنید، بلافاصله اتصال به «اینجام» برقرار می‌گردد:


        injam.connect();
    

iOS

به زودی...


سرور

PHP

Laravel

در لاراول تنها کافیست INJAM_API_KEY را در فایل .env خود اضافه کنید:


        INJAM_API_KEY=YOUR_INJAM_API_KEY
    


دنبال کردن (Subscribe) کاربر

برای دریافت اطلاعات از دستگاه کاربر موردنظر، ابتدا باید آن را دنبال (Subscribe) کنید. این کار را به راحتی و با استفاده از متدهای زیر انجام دهید و شناسه یا همان Physical ID کاربر موردنظر را به عنوان پارامتر به آن پاس دهید:


دقت داشته باشید که با Subscribe کردن یک کاربر، مادامی که آن را Unsubscribe نکرده باشید، هربار با اتصال به سرویس، کاربر موردنظر درحال دنبال شدن است. پس یادتان باشد هر موقع نیازی به دنبال شدن یک کاربر نباشد حتما باید آن را Unsubscribe کنید.

وب

از متد subscribe(CHANNELـNAME) استفاده کنید:


        injam.subscribe('abcdef')
    

اندروید

از متد subscribe(CHANNELـNAME) استفاده کنید:


        injam.subscribe('abcdef');
    

iOS

به زودی...



لغو دنبال کردن (Unsubscribe) کاربر

با استفاده از متدهای زیر، دنبال کردن یک کاربر بخصوص را با دادن شناسه آن لغو کنید:

وب

از متد unsubscribe(CHANNELـNAME) استفاده کنید:


        injam.unsubscribe('abcdef')
    

اندروید

از متد unsubscribe(CHANNELـNAME) استفاده کنید:


        injam.unsubscribe('abcdef');
    

iOS

به زودی...



دریافت موقعیت مکانی

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

وب


        injam.on('tracking', function (data) {
            console.log(data) // Logs: {channel: 'abcdef', lat: 35.6892, lng: 51.3890}
        })
    

اندروید


        @Override
        public void tracking(data) {
            // Here you have access to receiving location data from subscribing devices
            Log.d("info", data) // Logs: {channel: 'abcdef', lat: 35.6892, lng: 51.3890}
        }
    

iOS

به زودی...



ارسال موقعیت مکانی

ارسال موقعیت مکانی در دو مرحله صورت می‌گیرد. ابتدا SDK با متدی که در اختیارتان می‌گذارد اجازه موقعیت‌یابی را از کاربر می‌گیرد و درصورت تایید او، به‌دست آوردن موقعیت مکانی دستگاه را آغاز و امکان ارسال آن به سرور را برای‌تان فراهم می‌کند.


وب

با فراخوانی یکباره متد watchLocation() بعد از احراز هویت، هرگاه موقعیت مکانی تازه‌ای از دستگاه به‌دست آید، این متد، ایونتی با نام newPosition را ایجاد می‌کند و اطلاعات موقعیت مکانی فعلی در آن قابل دسترس است. پس کافی‌ست مانند مثال پایین به‌طور آنی، منتظر تغییر موقعیت مکانی دستگاه باشید و اطلاعات موقعیت را با استفاده از متد updateLocation(DATA) ارسال کنید:


        // Catch location services acceptance from user and start watching current device location
        injam.on('authenticated', function () {
            injam.watchLocation()
        })
        // Listen to 'newPosition' event
        injam.on('newPosition', function (data) {
            // New current location data is here. so you can send it to Injam server
            injam.updateLocation(data)
        })
    

متد watchLocation() ۲ پارامتر اختیاری نیز می‌تواند بگیرد. اولی Bolean است و می‌تواند مشخص کند که ارسال موقعیت به‌صورت روان و لحظه‌ای باشد (پیش‌فرض همینطور است) و یا هر X ثانیه یک بار فرستاده شود. پارامتر دوم نیز عدد دلخواه شما برای فرستادن هر چند ثانیه یک‌بار موقعیت استفاده می‌شود که حداقل باید ۳ ثانیه باشد و اگر این عدد را ندهید SDK به تغییر موقعیت دستگاه گوش می‌کند و به انتخاب خود هرچند ثانیه یک بار آن را می‌فرستد.


        injam.watchLocation(SMOOTH, INTERVAL in millisecond)
    

مثال:


        // Watch current location every 10 seconds

        injam.on('authenticated', function () {
            injam.watchLocation(false, 10000)
        })
        injam.on('newPosition', function (data) {
            injam.updateLocation(data)
        })
    

اندروید

ابتدا با متد initSendLocations() سرویس‌های مکانی را فعال و از کاربر اجازه استفاده را بگیرید و سپس با صدا زدن متد watchMyLocation() بعد از احراز هویت، ارسال اطلاعات موقعیت را آغاز کنید.


        // First initiate location services and catch user acceptance
        injam.initSendLocations();

        @Override
        public void authenticated() {
            // Then watch every device's new position and send it to server automatically
            injam.watchMyLocation();
        }
    

iOS

به زودی...



توقف ارسال موقعیت مکانی

هرگاه می‌خواهید ارسال موقعیت مکانی را متوقف کنید، از متد stopWatchLocation() استفاده کنید:

وب


        injam.stopWatchLocation()
    

اندروید

iOS

به زودی...



ارسال اطلاعات دلخواه

به آسانی و با استفاده از متد publish(DATA) قادر خواهید بود تا هر نوع اطلاعاتی و در هر فرمتی که قابل قبول شما باشد را ارسال کنید.

وب


        var data = {
            message: "Ping"
        }

        injam.publish(data)
    

اندروید


        JSONObject dataObject = new JSONObject();
        dataObject.put("message", "Ping");
        String data = dataObject.toString();
        injam.publish(data);
    

iOS

به زودی...



دریافت اطلاعات دلخواه

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

وب


        injam.on('rawData', function (data) {
            console.log(data) // Logs: {"message": "Ping", "channel": "abcdef"}
        })
    

اندروید


        @Override
        public void rawData(data) {
            // Here you have access to receiving raw data from subscribing devices
            Log.d("info", data); // Logs: {"message": "Ping", "channel": "abcdef"}
        }
    

iOS

به زودی...



قطع کردن ارتباط

با استفاده از متد disconnect() به طور کلی کانکشن به سرور را می‌توانید متوقف نمایید.

وب


        injam.disconnect()
    

اندروید


        injam.disconnect();
    

iOS

به زودی...



تولید Physical ID

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


به‌طور کلی رابطه یک Physical ID با کاربر شما، در دیتابیس Backend شما نگه‌داری می‌شود تا فقط شما بدانید یک Physical ID به کدام کاربرتان اشاره دارد. اگر از SDKهای سمت سرور اینجام استفاده کنید، مدیریت رابطه Physical IDها با کاربرها توسط SDK انجام می‌شود و لازم به هیچ پیاده‌سازی بخصوصی نخواهید داشت. اما درصورتی که بخواهید مستقیما از API سمت سرور اینجام استفاده کنید، خودتان می‌بایست رابطه Physical IDها و کاربران‌تان را مدیریت و نگه‌داری کنید.

API

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


PHP

Laravel

        $model->generatePhysicalId(EXPIRE_AT[optional] in seconds)
    

مثال:


        $user = User::find(10);
        $user->generatePhysicalId(); // Generate a new Physical ID from Injam Server and store it for user
        $physicalId = $user->getPhysicalId(); // Get stored Physical ID
    

Python

Django

به زودی...

GO

به زودی...

JAVA

به زودی...



ردیاب‌ها

با استفاده از ردیاب‌ها قادرید تا نمایش حرکت یک موتور، خودرو یا هرچیز دیگری روی نقشه را از طریق یک لینک برای دیگر کاربرانتان قابل اشتراک‌گذاری کنید. فرض کنیم شما یک فروشگاه اینترنتی هستید. به کمک ردیاب‌های اینجام می‌توانید هرگاه که پیک شما راهی تحویل بسته کاربر شد، با ارسال یک پیامک یا ایمیل (که اینجام آن را می‌فرستد)، لینک نقشه زنده پیک را برای کاربر ارسال کرده و کاربر با کلیک بر روی لینک، بدون اینکه نیاز به ورود یا ثبت‌نام داشته باشد، پیک شما را به‌صورت زنده روی نقشه مشاهده کند.


همچنین امکان افزودن اطلاعات بیشتر مانند اسم و آواتار و شماره موبایل پیک برای تماس توسط کاربر نیز وجود دارد.

لینکی که برای کاربر فرستاده می‌شود چیزی همانند لینک پایین است، ببینید:


مشاهده نمونه ردیاب https://tracker.injam.io/7zwqGNXG5b9K

PHP

Laravel

        addTracker(TRACKING_PHYSICAL_ID, TRACKER_MOBILE)
    

مثال:


        $injam = new InjamLaravelPackage;
        $tracker = $injam->addTracker('zxcvbn', '09123456789');
    


وب‌هوک‌ها

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


Geofence

این وب‌هوک به شما کمک می‌کند تا هرگاه کاربر X وارد یک نقطه مکانی با شعاعی مشخص شد یا از آن خارج شد، یک API سمت شما از طرف اینجام صدا زده شود و اطلاعات کاربر و ایونت (ورود/خروج) تشخیص داده شده را در اختیارتان بگذارد و شما نسبت به آن یک اکشنی را روی سیستم خود اجرا کنید.



PHP

Laravel

افزودن وب‌هوک Geofence


        addGeoFenceWebhook(OBJECT_TYPE, PHYSICAL_ID, TARGET_POINT, RADIUS_IN_METERS, ENDPOINT, DETECT_EVENTS)
    

مثال:


        $injam = new InjamLaravelPackage;
        $hook = $injam->addGeoFenceWebhook('bike', 'zxcvbn', '35.7384336,51.4026536', 60, 'https://api.example.com/v1/do/action', 'enter,exit');
    


ایونت‌ها

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


وب

connecting هر موقع که SDK درحال وصل‌شدن به سرور باشد، این رویداد رخ می‌دهد.
connected به محض وصل شدن SDK به سرور، این ایونت اجرا می‌شود.
authenticated با هر احراز هویت موفقیت‌آمیز، این ایونت رخ می‌دهد.
unauthorized درصورتی که احراز هویت قابل قبول نباشد، این ایونت رخ می‌دهد.
disconnected با قطع کردن ارتباط SDK از سرور، این ایونت رخ می‌دهد.
connectionAborted هنگامی روی می‌دهد که اتصال به سرور به هر دلیلی قطع شده باشد - مشکل در اینترنت یا تمام شدن پلن یا اجرای عمدی متد injam.disconnect() وقتی SDK درحال اتصال باشد.
closed درصورت داشتن هرنوع قطعی مانند آنچه در disconnected و یا در connectionAborted اتفاق می‌افتد، این ایونت اجرا می‌شود.
subscribed هرگاه دنبال کردن یک کاربر با موفقیت صورت گیرد، این ایونت اجرا شده و نام Channel یا همان Physical ID کاربر دنبال‌شده را برمی‌گرداند.
subscribeFail هرگاه دنبال کردن یک کاربر با هرگونه مشکل مواجه باشد، این ایونت اجرا شده و نام Channel یا همان Physical ID کاربر را برمی‌گرداند.
unsubscribed هرگاه لغو دنبال کردن یک کاربر با موفقیت صورت گیرد، این ایونت اجرا شده و نام Channel یا همان Physical ID کاربر لغوشده را برمی‌گرداند.
newPosition با اجرای موفقیت آمیز متد injam.watchLocation() هرلحظه که موقعیت مکانی تازه‌ای از دستگاه فعلی به‌دست آید، این ایونت اجرا می‌شود و در آن اطلاعات مربوط به موقعیت مکانی فعلی در اختیارتان قرار می‌گیرد.
جزییات بیشتر
tracking هرگاه که موقعیت مکانی تازه‌ای از دستگاه‌های درحال دنبال‌شدن منتشر شود، این ایونت اجرا شده و نام Channel و اطلاعات موقعیت مکانی هریک از دستگاه‌ها در آن قابل دسترس و استفاده خواهد بود.
جزییات بیشتر
rawData با انتشار هرنوع اطلاعات دلخواه از دستگاه‌های درحال دنبال‌شدن، این ایونت اجرا می‌شود و نام Channel دستگاه و اطلاعات ارسالی آن در اینجا قابل دسترس و استفاده است.
جزییات بیشتر

نحوه به‌کارگیری ایونت‌ها:


        injam.on('EVENT_NAME', function () {
            // Do your actions
        })
    

مثال‌ها:


        injam.on('connecting', function () {
            console.log('Connecting...')
        })

        injam.on('subscribed', function (channel) {
            console.log(channel) // Logs subscribed channel name
        })

        injam.on('rawData', function (data) {
            console.log(data) // Logs received raw data
        })
    

اندروید

به زودی...


iOS

به زودی...




پروژه‌های نمونه

در پروژه‌های زیر تمامی امکانات و قابلیت‌های SDKهای اینجام در قالب مثال‌های واقعی مورد استفاده قرار گرفته و چگونگی استفاده از این امکانات را به وضوح نمایش می‌دهد.


وب

در این پروژه خواهید دید که چگونه موقعیت مکانی یک یا چند دستگاه را روی نقشه‌های گوگل مپ و اوپن استریت مپ و سیدارمپ نمایش دهید. همچنین به‌کارگیری امکان ارسال و دریافت پیام آنی در آن گنجانده شده است.


دریافت کد از Github مشاهده آنلاین نمونه‌های وب


اندروید

در این پروژه خواهید دید که چگونه موقعیت مکانی یک یا چند دستگاه را روی نقشه‌های گوگل مپ و سیدارمپ نمایش دهید.


دریافت کد از Github دریافت مستقیم اپلیکیشن


iOS

به زودی...




اکانت دمو

با حساب کاربری زیر به سریع‌ترین شکل ممکن پنل اینجام و امکانات آن را از نظر بگذرانید:




امنیت

برای برقراری و حفظ امنیت هم برای صاحبان اپلیکیشن‌ها و هم برای کاربران آن‌ها، چند اقدام لازم بود صورت بگیرد. مهم‌ترین بخش آن این است که هیچگونه اطلاعات هویتی از کاربران اپلیکیشن‌ها در «اینجام» ثبت نمی‌شود و تنها یک شناسه (Physical ID) منحصر به فرد و رمزنگاری شده از طرف صاحب اپلیکیشن به «اینجام» معرفی می‌گردد که فقط و فقط برای خود صاحب اپلیکیشن معنی دارد و این شناسه رابط بین اپلیکیشن شما و «اینجام» برای معرفی یا پیدا کردن یک کاربر بخصوص است. همچنین تمامی اطلاعات به‌صورت رمزنگاری شده و از روی پروتکل SSL ارسال و دریافت می‌شود. بنابراین در «اینجام» هدف قراردادن یک کاربر خاص یا جعل موقعیت مکانی آن و مواردی از این قبیل برای عناصر بیرونی عملا غیرممکن خواهد بود مگر آنکه اطلاعات کاربر از سمت صاحب اپلیکیشن لو رفته باشد.

همچنین برای جلوگیری از هرگونه سوءاستفاده از دسترسی اپلیکیشن ِ شما (صاحب اپلیکیشن) به «اینجام»، باید از لو رفتن و دردسترس قرارگرفتن کلید اتصال اپلیکیشن (Application Key) جلوگیری نمایید و در غیر این‌صورت مسئولیت تبعات آن با شما (صاحب اپلیکیشن) است.

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



محدودیت‌های استفاده از API

هر درخواست موفقی که از سمت شما چه کلاینت و چه سرور، به سرورهای «اینجام» برسد، یک API Call به حساب می‌آید و با توجه به نوع درخواست، پلن فعلی شما را مصرف می‌کند.


به‌طور کلی این درخواست‌ها در مصرف پلن شما محاسبه می‌شوند:


  • ۱. اتصال اولیه (کلاینت)
  • ۲. ارسال اطلاعات (کلاینت)
  • ۳. دنبال کردن (Subscribe) یک کاربر (کلاینت)
  • ۴. اضافه شدن دستگاه جدید (کلاینت)
  • ۵. اضافه کردن اپلیکیشن جدید (در پنل)
  • ۶. افزودن ردیاب (سرور)
  • ۷. تغییر وضعییت ردیاب (سرور)
  • ۸. افزودن وب‌هوک (سرور)
  • ۹. حذف کردن وب‌هوک (سرور)


بدیهی است که همیشه پلن شما مشخص کننده محدودیت‌های شما در استفاده از API است و این محدودیت ها شامل ۵ مورد می‌شوند:


  • ۱. مدت زمان اعتبار (در صورت اتمام، سرویس‌دهی بسته می‌شود)
  • ۲. تعداد درخواست قابل پردازش (در صورت اتمام، سرویس‌دهی بسته می‌شود)
  • ۳. تعداد اپلیکیشن (در صورت پرشدن ظرفیت، امکان ثبت اپلیکیشن جدید نخواهید داشت)
  • ۴. تعداد دستگاه قابل اتصال (درصورت پرشدن ظرفیت، امکان پذیرفتن دستگاه جدید نخواهد بود)
  • ۵. امکان استفاده از سرویس‌های SDK سمت سرور (درصورت نداشتن این امکان، به این سرویس‌ها دسترسی نخواهید داشت)

نکته دیگر آنکه پلن شما به ازای هر اپلیکیشنی که دارید به طور جداگانه مصرف می‌گردد و بین اپلیکیشن‌ها مشترک نیست.