HosseinRashno / Notifood

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

نوتیفود

نوتیفود یک لایبرری جهت مشاهده منوی رستوران‌ها و ثبت سفارش از آنها می‌باشد. با استفاده از قابلیت وب فیزیکی (physical web) سیگنال‌های مورد نظر از رستوران‌ها دریافت شده و پس از تحلیل این سیگنال‌ها در نرم‌افزار موبایلی، نوتیفیکیشنی برای مشاهده منوی آن رستوران به کاربر نشان داده می‌شود.
جهت کسب اطلاعات بیشتر، به وب سایت نوتیفود مراجعه نمایید

http://notifood.com

Notification

استفاده از نوتیفود

پیش نیاز

برای استفاده از نوتیفود می‌بایست ابتدا به بخش توسعه دهندگان وبسلیت نوتیفود مراجعه کنید و پس از ثبت Package Name و شماره حساب جهت تسویه حساب، کد DeveloperKey را دریافت نمایید.

نصب

شما می‌توانید به روش زیر Notifood را به پروژه اندرویدی خود اضافه کنید

It will be update ASAP
توجه داشته باشید minSdkVersion این لایبرری 14 می‌باشد

توضیح متدهای نوتیفود

setDevKey(String devKey)
ثبت کد developerKey در لایبرری


initialize(Context context)
راه‌اندازی لایبرری نوتیفود


enableNotifood()
فعالسازی لایبرری


disableNotifood()
غیرفعالسازی لایبرری


enableDebugMode()
فعالسازی حالت دیباگ، در این حالت لاگ‌های مربوطه با تگ Notifood در logcat نشان داده می‌شوند


disableDebugMode()
غیرفعالسازی حالت دیباگ، در این حالت لاگی نشان داده نمی‌شود


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

این لایبرری برای شناسایی سیگنال‌های BLE و ذخیره اطلاعات نیاز به داشتن دسترسی‌های زیر دارد.
android.permission.INTERNET
android.permission.ACCESS_COARSE_LOCATION
android.permission.WRITE_EXTERNAL_STORAGE
این دسترسی ها در Manifest لایبرری وجود دارد و شما می‌بایست برای نسخه‌های جدید اندروید، در حین اجرای نرم‌افزار از کاربر دسترسی لازم را بگیرد
نمونه کد برای انجام اینکار در ادامه وجود دارد.
توجه داشته باشید که هیچگونه استفاده‌ای از فایل‌های شخصی افراد نخواهد شد و برای شفافیت این موضوع کدهای لایبرری بصورت متن باز در اختیار شما قرار گرفته است

نمونه کد فعالسازی نوتیفود در پروژه

برای فعالسازی نوتیفود در پروژه می‌بایست دسترسی‌های لازم را از کاربر بگیرید، لایبرری را instantiate بکنید، کد DeveloperKey را به لایبرری بدهید و آن را initialize بکنید.
در نمونه کد زیر تمام موارد گفته شده پیاده سازی شده است
لطفا دقت کنید که این کد برای استفاده در یک Activity که از AppCompatActivity ساپورت لایبرری ارث بری کرده نوشته شده است. بنا به استفاده شما بخشی از این کد ممکن است نیاز به تغییر داشته باشد
import android.Manifest;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.notifood.notifoodlibrary.Notifood;


public class MainActivity extends AppCompatActivity {
    final int MY_PERMISSIONS_REQUEST = 100;
    final String[] PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_COARSE_LOCATION};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            int haveLocationPermission = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION);
            int haveWritePermission = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
            if (haveLocationPermission!=PackageManager.PERMISSION_GRANTED || haveWritePermission!=PackageManager.PERMISSION_GRANTED) {

                boolean showLocationPermissionReason = ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION);
                boolean showWritePermissionReason = ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
                if (showLocationPermissionReason || showWritePermissionReason) {
                    AlertDialog.Builder builder;

                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                        builder = new AlertDialog.Builder(MainActivity.this, android.R.style.Theme_Material_Dialog_Alert);
                    } else {
                        builder = new AlertDialog.Builder(MainActivity.this);
                    }

                    builder.setTitle(getString(R.string.request_permission_title))
                            .setMessage(getString(R.string.explanation_for_permissions))
                            .setPositiveButton(getString(R.string.close_btn), new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {
                                    ActivityCompat.requestPermissions(
                                            MainActivity.this,
                                            PERMISSIONS,
                                            MY_PERMISSIONS_REQUEST);
                                    dialog.cancel();
                                }
                            })
                            .setIcon(android.R.drawable.ic_dialog_info)
                            .show();
                } else {
                    ActivityCompat.requestPermissions(
                            MainActivity.this,
                            PERMISSIONS,
                            MY_PERMISSIONS_REQUEST);
                }
            } else {
                startNotifood();
            }
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST: {
                if (grantResults.length >= 2
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED
                        && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
                    startNotifood();
                }
                return;
            }
        }
    }

    private void startNotifood(){
        Notifood notifood = new Notifood(); // Instantiate the library
        notifood.setDevKey("YourDeveloperKey"); // Set your developer key
        notifood.enableDebugMode();	// Enable debug mode
        notifood.enableNotifood();	// Enable notifood
        notifood.initialize(this); // Initialize notifood
    }
}

سوالات متداول

این بخش بزودی با سوالاتی که ممکن است با آن مواجه شوید تکمیل می‌شود

تغییرات برای نسخه‌های آینده

  • Add library to maven repository
  • Add sample project in github
  • Remove need for WRITE_EXTERNAL_STORAGE permission
  • Support for IOS
  • Support for Unity
  • Add test case

طرح مشکلات

لطفا هر مشکلی در رابطه با این لایبرری را در بخش issue tracker این لایبرری مطرح نمایید






تمامی حقوق این لایبرری متعلق به شرکت Notifood به آدرس زیر می‌باشد

http://notifood.com

About


Languages

Language:Java 100.0%