Giter Club home page Giter Club logo

chabok-client-js's Introduction

Logo

Chabok Push Client for Javascript

npm npm

This Chabok Push client library supports web browsers, web workers.

Please check library changes.

Getting started

Yarn (or NPM)

You can use any NPM-compatible package manager, including NPM itself and Yarn.

npm install chabokpush --save

Or:

yarn add chabokpush

Then:

import chabokpush from 'chabokpush';

Or, if you're not using ES6 modules:

const chabokpush = require('chabokpush');

CDN

<script src="https://unpkg.com/chabokpush@[X.Y.Z]/dist/chabokpush.min.js"></script>

Replace [X.Y.Z] with the latest version

Web Push Browser Support

The following table shows browsers' support for chabok messaging and web push notifications:

Browser web push chabok messaging Notes
Chrome ✓ v42+ In v51 and less, the `gcm_sender_id` is needed to get a push subscription.
Edge ✓ v17+ (April 2018)
Firefox ✓ v44+
Opera ✓ v39+ * * Opera supports push on Android but not on desktop.

The `gcm_sender_id` is needed to get a push subscription.
Safari
Samsung Internet Browser ✓ v4.0.10-53+ The `gcm_sender_id` is needed to get a push subscription.

For supporting web push notifications on chrome, opera and Samsung internet browser gcm_sender_id should be added to Manifest.js: (If you already have created your gcm_sender_id, you can find it in panel>setting>android cart)

{
  .....
    "gcm_sender_id": "GCM_SENDER_ID",
  .....
}

then add the Manifest.js to your root index.html:

<head>
 ...
  <link rel="manifest" href="manifest.json">
...
</head>

Initialization

const auth = {
  appId: 'APP_ID',
  webKey: 'WEB_TOKEN',
  devMode:true
}
const options={silent: true}

const chabok = new chabokpush.Chabok(auth, options)

if devMode enabled you can Test your Project on development Mode. You can get your APP_ID, API_KEY, USERNAME and PASSWORD from the Chabok dashboard.

Options

There are a number of configuration parameters which can be set for the ChabokPush client, which can be passed as an object to the ChabokPush constructor, i.e.:

Param Type Default Description
[options] Object
[options.realtime] Object true set false to disable Realtime Connection
[options.webpush] Object
[options.webpush.enabled] Boolean false Set true to enable push Notification
[options.silent] Boolean true Receive messages Silently

Sample Usage

const auth = {
  appId: 'APP_ID',
  webKey: 'WEB_TOKEN',
  devMode: true
}
 const options = {
   webpush: {
     enabled: true,
     publicKey: 'demo'
   },
   silent: false,
 };

const chabok = new chabokpush.Chabok(auth, options)

chabok.on('registered', deviceId => console.log('DeviceId ', deviceId))

chabok.on('connected', _ => {
  console.log('Connected')
  chabok.subscribe('important') // subscribe to important channel
  chabok.subscribeEvent('geo') // subscribe to geo events
})

chabok.on('message', msg => console.log('Message ', msg))
chabok.on('geo', geoEvent => console.log('Geo Event ', geoEvent))

chabok.on('connecting', _ => console.log('Reconnecting'))
chabok.on('disconnected', _ => console.log('offline'))
chabok.on('closed', _ => console.log('disconnected'))

if (chabok.isRegistered() && chabok.getUserId()) {
  chabok.register(chabok.getUserId())
} else {
  chabok.register('012345678910111213') // your userId
}

chabok-client-js's People

Contributors

behrad avatar chabokci avatar hamidreza411 avatar hos7ein avatar husseinhj avatar jalalazimi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

hamidreza411

chabok-client-js's Issues

مشکل نوتیفیکیشن در پس زمینه

سلام وقت بخیر
سیستم را بطور دقیق نصب کردم

فایل
ChabokSDKWorker.js
را در پوشه ی روت سایت قرار دادم

بعد در فایل جاوا اسکریپ صفحه این را قرار دادم
if('serviceWorker' in navigator && 'PushManager' in window && 'Notification' in window) { const authConfig = { appId: '-----------', apiKey: '----------------------', username: '--------------------', password: '-----------------------', devMode: true }; const options = { webpush: { enabled: true, publicKey: '-------------------------------' }, silent: false }; chabok = new chabokpush.Chabok(authConfig, options); }
و مشخصات کاربری را بطور دقیق تکمیل کردم

بعد از اون کاربر را در چابک ثبت نام کردم توسط کد زیر
chabok.register('---------------------');
بجای خط فاصله ها شناسه ای برای کاربر در نظر گرفتم

سرویس ورکر نصب شد و تمامی مراحل با موفقیت انجام شد و کاربر به درستی در چابک ثبت شد ، اما مشکلی که پیش اومده اینه که وب نوتیفیکیشن ها فقط وقتی میان که تب مرورگر مربوط به سایت باز باشه ، وقتی مرورگر بسته باشه یا روی یه تب دیگه باشه نوتیفیکیشن نمیاد و در پنل کاربری هم پیامی که میاد اینه :

این پیام هنوز تحویل داده نشده است

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

وارد این آدرس شدم :
https://api.doc.chabokpush.com/#/push/push_toUsers

کانکشن را با زدن قفل و وارد کردن
access_token
برقرار کردم و از قسمت
push_toUsers
با وارد کردن آیدی شخص در قیمت یوزر و تعیین کانال دیفالت ارسال را انجام دادم

{ "user": "09635634564", "channel": "default", "content": "string", "data": {}, "trackId": "string", "inApp": false, "live": false, "useAsAlert": false, "alertText": "string", "ttl": 0, "fallback": {}, "clientId": "string", "notification": { "title": "rtertertergdf", "body": "gdfgdgdfgdfgdgdgd", "sound": "string", "actions": [ {} ], "mediaType": "string", "mediaUrl": "string", "contentAvailable": true, "mutableContent": true, "category": "string" }, "idr": false, "silent": true, "contentBinary": "string", "contentType": "string", "id": 0 }

===================================
مشکل به وجود آمده با پیاده سازی شرایط ذکر شده برای من پیش اومد
من که از سرویس ورکرها تا حدود زیادی سر در میارم وارد فایل سرویس ورکر شدم و در قسمت پوش که مربوط به سرویس ورکر هست یه لاگ هم گذاشتم

self.addEventListener("push", function (t) { console.log('hiiiiii'); if (t.data.json()) { var n = t.data.json(); t.waitUntil(self.registration.showNotification(n.title, n)) } }

اما سیستم لاگ رو نمیگیره انگار اصلا اونت لیسنر مربوط به پوش صدا زده نمیشه
لطفا در این خصوص راهنمایی نمائید

مشکل در نمایش وب پوش در اندروید

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

ارسال پوش برای pwa

سلام

ما با ری‌اکت pwa توسعه دادیم و داخل مستندات ذکر کردید که "نکته : اگر مرورگر شما بسته شده باشد، دریافت پوش‌نوتیفیکیشن امکان‌پذیر نیست.".

میخواستم بپرسم اگر یوزرها add to home screen کرده باشن پوش ارسال میشه یا نه؟

تشکر

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

سلام و وقت بخیر خدمت تیم شما

ممنون بابت سامانه فوق العاده کارآمد و عالی که دارید ، من با پی اچ پی میخوام وب پوش بزنم هنگام ارسال تصویر پیشفرض چابک آورده میشه و عنوان را هم نتونستیم تغییر بدیم ، لطفا در این خصوص راهنمایی بفرمائید

مورد دیگر اینکه در خصوص این پارامترها و کاربرد اونها چطور میتونیم اطلاعات دقیق بدست بیاریم ؟

{
  "user": "string",
  "channel": "string",
  "content": "string",
  "data": {},
  "trackId": "string",
  "inApp": false,
  "live": false,
  "useAsAlert": false,
  "alertText": "string",
  "ttl": 0,
  "fallback": {},
  "clientId": "string",
  "notification": {
    "title": "string",
    "body": "string",
    "sound": "string",
    "actions": [
      {}
    ],
    "mediaType": "string",
    "mediaUrl": "string",
    "contentAvailable": true,
    "mutableContent": true,
    "category": "string"
  },
  "idr": false,
  "silent": true,
  "contentBinary": "string",
  "contentType": "string",
  "id": 0
}

ثبت تگ بلافاصله بعد از رجیستر

من بلافاصله بعد از رجیستر کردن اقدام به ثبت یا حذف یک تگ میکنم اما با خطای زیر مواجه میشم.
Error: user is not registered!

نمونه کدها :
chabok.register(ucID);
chabok.addTag("Guest");

این متد رجیستر کال بک نداره که بعد از ثبت شدن بتونیم اقدام به ثبت تگ کنیم؟

افزودن ionic

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

مشکلات در اتصال

با سلام خدمت شما

1:
نکته امنیتی : مقدار USER_ID را هرگز به صورت خام در LocalStorage ذخیره نکنید، چون این مقدار شناسه معنادار می‌باشد و می‌توان با آن کاربر را روی چابک ثبت‌نام کرد. برای این منظور می‌توانید از متد ()chabok.getUserId چابک استفاده کنید که شناسه کاربر را به صورت رمزنگاری شده نگه‌می‌دارد.

این را دقیقتر توضیح دهید

2: ما زمانی که
devMode: true
را فالس میذاریم خطا دریافت میکنیم
متن خطا به این صورت هست ::

Failed to load resource: net::ERR_NAME_NOT_RESOLVED
chabokpush.min.js:8 Uncaught (in promise) Error: Network Error
    at t.exports (chabokpush.min.js:8)
    at XMLHttpRequest.d.onerror (chabokpush.min.js:8)

در رابطه با تفاوت خاموش بودن یا روشن بودن این گزینه توضیح بفرمائید که اصلا به چه کاری میاد و چه فرقی میکنه

مشکل در اتصال

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

POST https://sandbox.push.adpdigital.com/api/installations 500 (Internal Server Error)

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

تغییر و مشکل

dsfsdfsdf

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

مثلا کد زیر کار نمیکنه دیگه ::
chabok.on('connected',function () { console.log('is connected to push server'); });

مشکل در اتصال از طریق کد جاوااسکریپت

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

<script type="text/javascript" src="https://unpkg.com/chabokpush/dist/chabokpush.min.js"></script>
            <script>
                $(function () {
                    const auth = {
                        appId: '<APP_ID>',
                        apiKey: '<API_KEY>',
                        username: '<USERNAME>',
                        password: '<PASSWORD>',
                        devMode: true
                    };
                    const options = {
                        webpush: {
                            enabled: true,
                            publicKey: '<PUBLIC_KEY>'
                        },
                        silent: false
                    };
                    const chabok = new chabokpush.Chabok(auth, options);
                    if (chabok.isRegistered()) {
                        chabok.register(chabok.getUserId());
                    } else {
                        chabok.register('15334');
                    }
                });
            </script>

پاسخی که هنگام رجیستر در کنسول مرورگر دریافت میکنم:

Promise { "pending" }​<state>: "pending"​<prototype>: PromiseProto​​catch: function catch()​​constructor: function Promise()​​finally: function finally()​​then: function then()​​Symbol(Symbol.toStringTag): "Promise"​​<prototype>: Object { … } 

افزودن دسته جمعی تگ ها

سلام وقت بخیر
با توجه به اینکه شخص در یک وب سایت معمولا 15 تا 20 ثانیه وقت صرف خواهد کرد
نمیشه معمولا تمامی تگ ها را به درستی اضافه کرد برای شخص
ما حدود 100 تگ میخوایم برای هر کاربر تنظیم کنیم و این نیازمند یه امکان هست که بشه دسته جمعی تگ ها را اضافه کرد

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

مشکلات تگ ها

سلام وقت بخیر

چطور میشه چندتا تگ را با هم تعریف کرد مثلا توی وان سیگنال ما به راحتی تمامی تگ ها را با یک ری کوئست ارسال میکردیم به سرور

سوال بعدی اینکه چرا تگ ها مقدار نمیگیرن مثلا ما میخوایم یه تگ بزنیم به نام شماره موبایل و شماره موبایل هر شخص را بعنوان مقدار داشته باشیم

و مورد بعدی اینکه آیا در هنگام ارسال نوتیفیکیشن یا پیام میشه از مقدار یک تگ استفاده کرد مثل مورد بالا که گفتم تگ مقدار بگیره و بعد از اون مقدار در پیام های گروهی استفاده کنیم

من یه توضیح کاملتر میدم متوجه منظورم بشید
ما از وان سیگنال استفاده زیادی میبردیم کاربر با ورود به سامانه ما تمامی اطلاعاتش ایمیل موبایل و ... بصورت تگ داخل وان سیگنال تعریف میشد حدودا میشه گفت هر کاربر 15 20 تا تگ داشت بعد ما یکسری تگ داشتیم که زمینه های فعالیت کار را نشون میداد مثلا اینکه ضایعات آهن کار میکنه یا مس کار میکنه یا ... ، بعد میومدیم بصورت هوشمند وقتی یه آگهی آهن برای ما میاومد برای تمامی افرادی که آهن کار میکردند و در واقع تگ آهن داشتند پوش ارسال میکردیم ، گاهی اوقات هم لازم بود برای تمامی کسانی که توی مس کار میکردند مثلا و حدود 500 نفر بودند با ترکیب نام و نام خانوادگیشون پیامی ارسال کنیم

در واقع میتونم بگم چند امکان ما نیاز داریم ::
یک : ثبت دست جمعی چندین تگ برای کاربر
دو : هر تگ مقدار هم بتونه بگیره حتما
سه : بتونیم از تگ ها و مقادیر اونها در متن هایی که ارسال میکنیم استفاده کنیم
چهار : در هنگام ارسال پوش به کاربر بتونیم شرط تعریف کنیم مثلا بگیم اونی که تگ آهن داره و مس داره یا بگیم اونی که تگ آهن داره ولی مس رو نداره یعنی شرط با (و) یا (یا) بتونیم تعیین کنیم

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

سلام
میخوام از چابک پوش روی یک اپلیکیشن PWA استفاده کنم.
این اپلیکیشن با فریمورک IONIC نوشته شده و از Angular5 استفاده میشه.

بعد از نصب کتابخونه و ایمپورت کردن اون توی پروژه وقتی توی صفحه اصلیم مقداردهی های اولیه رو انجام میدم و خط زیر (که برای ثبت کاربر مهمان هست) رو اضافه می کنم ارور میگیرم.
chabok.registerAsGuest();
.

عکس مربوط به ارور دریافتی

image

مشکل از کجا میتونه باشه؟
تشکر

بررسی وجود یک تگ

سلام وقت بخیر
چطور میشه بررسی کرد در هنگامی که کاربر در حال استفاده از سایت هست که آیا تگی را دارد یا خیر
به فرض مثال:

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

این چک کردن توسط جاوا اسکریپت انجام میشه

chabokpush.Chabok is not a constructor

سلام من پیاده سازی رو انجام دادم کدم هم به صورت زیر هست من فقط میخوام یوزر رجیستر کنم توی جابک از طریق جاوااسکریپت ولی با این ارور مواجه میشم
Uncaught TypeError: chabokpush.Chabok is not a constructor
کد من هم به این صورت هست

<script src="https://unpkg.com/[email protected]/dist/chabokpush.min.js"></script>
<script src="<?= baseHtmlUrl() ?>/ChabokSDKWorker.js"></script>
<script>
var userId= "<?=UserHelper::getKey(SSN_TOKEN)?>"
const auth = {
  appId: 'APP_ID',
  apiKey: 'API_KEY',
  username: 'USERNAME',
  password: 'PASSWORD',
  devMode:true
}
const options = {
      webpush: {
        enabled: true,
        publicKey: 'PUBLIC_KEY'
      },
      silent: false,
    };
const chabok = new chabokpush.Chabok(auth, options)
chabok.on('registered', deviceId => console.log('DeviceId ', deviceId))

if (chabok.isRegistered()) {
    chabok.register(chabok.getUserId())
} else {
	chabok.register(userId)
	ajaxing("",{"token":userId},"/user/updateAdminToken");
}
</script>

custom notification

سلام.میشه یه مثال یا حداقل توضیحی راجع به آرگومانهایی که نوتیفیکیشن میگیره تا بتونیم کاستومش کنیم بدین ؟و اینکه کجا میتونیم لینکی که نوتیفیکیشن روش کلیک میخوره میره رو ست کنیم ؟

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.