آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش کامل و تصویری پیاده سازی سرویس OneSignal + پاسخگویی مشکلات

SaLaH KuRD  8 سال پیش  7 سال پیش
+56 0

سلامی گرم دارم خدمت دوستان برنامه نویس عزیز ، امیدوارم حالتون خوب باشه و روز به روز تو زمینه برنامه نویسی پیشرفت کنید.

همونطور که اطلاع دارید سرویس پوش نوتیفیکیشن Parse ثبت نام سایتشو بسته و قراره تا سال 2017 فعالیت داشته باشه (حالا بعضی از دوستان میگن که کاربراشو به یه سایت دیگه منتقل میکنه ) و از اونجایی که پوش نوتیفیکیشن یکی از موارد ضروری هستش که هر برنامه ای باید داشته باشه باید جایگزین خوبی واسه اون پیدا میکردیم و من سرویس OneSingal رو توی برنامه هام پیاده کردم که خیلی خوب جواب داده و واقعا امکاناتاش عالیه ، بعضی از مزایای استفاده از سرویس OneSingal :

- قابلیت ارسال پوش نوتیفیکیشن به تعداد نامحدود

- ارسال پوش های اختصاصی ( تعیین صدای پوش ، آیکون ، تعیین رنگ بندی و کلی امکانات دیگه ...)

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

- اختصاص آیدی اختصاصی به هر کاربر قابلیت ارسال پوش نوتیفیکیشن به گروه خاصی از کاربران

- زمان بندی Push Notification و ارسال آن در زمان از پیش تعیین شده

- ارائه آمار دقیق از پوش های مشاهده شده و کلیک شده در بازه های زمانی مختلف

- ذخیره پوش ها به عنوان Template و ارسال سریع آن ها

- امکان انتقال کاربران از سرویس Parse و Import کردن آن ها داخل OneSignal ( واسه دوستانی که کاربرای زیادی تو Parse داشتن و نمیخوان که از دستشون بدن خیلی مفیده )

- و ...

خوب ابتدا بگم که OneSinglal از سرویس GCM گوگل ( Google Cloud Messenger ) استفاده میکنه و باید روی دستگاه کاربر برنامه یه ایمیل گوگل ثبت شده باشه.

بریم واسه ثبت نام ... :)

ابتدا سایت OneSignal رو باز کنید و روی گزین Sign up free کلیک کنید.

و توی فرم زیر به می تونید از طریق Github و یا شبکه های اجتماعی به صورت مستقیم وارد بشید و یا فرم رو تکمیل کنید که شامل آدرس ایمیل و رمز عبور و اسم شرکت هست ، بعد از تکمیل فرم روی گزینه Create Account کلیک کنید.

بعد از ثبت نام و تکمیل فرم لینک فعال سازی حساب به ایمیلتون ارسال میشه و باید به ایمیلتون برید و روی لینک کلیک کنید بعد اینکه روی لینک کلیک کردید به سایت منتقل میشید و مطابق عکس زیر حسابتون فعال میشه.

بعد از فعال سازی حسابتون روی گزینه LOG IN در بالای صفحه سمت راست کلیک کنید و ایمیل و رمزتون رو وارد وارد کنید و وارد حسابتون بشید بعد از ورود پنجره ای باز میشه که مانند عکس زیر اون رو ببندید.

همونطور که تو ابتدای آموزش گفتم OneSignal از سرویس پوش نوتیفیکیشن گوگل استفاده میکنه و برای همین باید ابتدا از لینک زیر توی کنسول توسعه دهندگان گوگل یه پروژه جدید بسازید . به علت تحریم باید از ******** استفاده کنید و وارد بشید.

 بر این لینک کلیک کنید . https://console.developers.google.com/project

و طبق عکس زیر در بالای صفحه روی گزینه Select Project کلیک کرده و روی گزینه دوم که Create a project است کلیک کنید.

در قست اول مانند عکس زیر اسم پروژه رو وارد کنید و بقیه تنظیمات را نیز مانند عکس انجام دهید و سپس بر روی گزینه Create کلیک کنید.

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

بعد از کلیک کردن روی پروژه Project ID و Project Number نمایش داده میشود و لازمه که اونا رو ذخیره کنید تا بعدا بتونیم توی OneSignal استفاده کنیم.

و در آخر بر روی گزینه Enable and manage APIs در پایین پروژه کلیک کنید.

در صفحه جدیدی که باز میشه توی کادر جستجو در بالای صفحه جمله Cloud messaging android رو تایپ کنید که و مثل عکس زیر روی نتیجه جستجو کلیک کنید.

حالا لازمه که سرویس رو فعال بکنید و برای اینکار روی گزینه Enable API کلیک کنید.

در صفحه جدیدی که باز میشه روی گزینه Credentials کلیک کنید.

روی گزینه آبی رنگ Create credentials کلیک کنید و گزینه اول API Key رو انتخاب کنید.

در پنجره ای که باز میشه روی گزینه Server Key کلیک کنید.

مقادیر پیشفرض رو تغییر ندید و مطمئن باشید که کادر IP adress خالی باشه.

و با موفقیت تونستیم API Key رو بسازیم و یادتون نره که حتما اونو ذخیره کنید که بعدا بتونیم استفاده بکنیم.

حالا برمیگردیم به سایت OneSignal ، بر روی گزینه Add a new app کلیک کنید.

در پنجره باز شده اسم برنامتون رو بنویسید و روی گزینه Create کلیک کنید  و بسته به نوع سیستمی که می خواید توش استفاده کنید گزینه ها رو انتخاب کنید.

نصب سرویس OneSignal توی Eclipse و Android Studio کار خیلی راحت و آسونیه.

اگه می خواید OneSignal رو توی Eclipse نصب کنید Eclipse

اگه میخواید OneSignal رو توی Android Studio نصب کنید Android Studio

خوب دیگه تقریبا کارمون تمومه و تونستیم سرویس OneSignal رو پیاده بکنیم.

برای ارسال پوش نوتیفیکیشن توی صفحه Dashbord برنامه بر روی گزینه New Message در پایین صفحه سمت چپ کلیک کنید.

اطلاعات رو وارد میکنیم. ( امکانات خیلی جالبی داره میتونید همراه متن شکلک های معروف رو هم ارسال کنید )

برای تعیین آدرس پوش نوتیفیکیشن ( اگه روش کلیک کردیم به چه لینکی هدایت بشیم ) مانند عکس روی گزینه Options کلیک کنید.

گزینه Launch URL رو فعال کنید

آدرس مورد نظرتون رو وارد کنید.

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

بعد از اتمام کار بر روی گزینه Preview کلیک کنید.

سپس روی گزینه Send کلیک کنید.

همونطور که میبینید پوش نوتیفیکیشن ما با موفقیت ارسال شد.

عکس دستگاه و کارکرد درست پوش نوتیفیکیشن :

تحویل پوش نوتیفیکیشن بسیار سریع و در همان لحظه انجام گرفت و همینطور آمار دقیق هم قابل مشاهده است.

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

امیدوارم از این آموزش لذت برده باشید و بتونید به خوبی ازش استفاده بکنید.

برای به هم نخوردن نظم تایپیک از دکمه تشکر استفاده کنید.

هر مشکل یا سوالی که داشتید میتونید در همین تایپیک مطرح بفرمایید.

+2 0
تشکر از این مطلب واقعا مفید فقط من " خوب ابتدا بگم که OneSinglal از سرویس GCM گوگل ( Google Cloud Messenger ) استفاده میکنه و باید روی دستگاه کاربر برنامه یه ایمیل گوگل ثبت شده باشه. " رو نفهمیدم یعنی در صورتی که کاربری که برنامه تو گوشیش نصبه ایمیل گوگل وارد نکرده باشه براش نوتیفیکیشن ارسال نمیشه ؟ اگه اینجوریه که خیلی بده چون خیلی از کاربرا این کار رو انجام نمیدن (8 سال پیش)
0 0
بله سوال مهمیه؟ (8 سال پیش)
0 0
بله متاسفانه کاربر باید توی گوشیش ایمیل گوگل ثبت شده باشه وگرنه Push Notification رو دریافت نمیکنه . (8 سال پیش)
0 0
دوست عزیز ی جاهایی خطای 404 رو میده (8 سال پیش)
0 0
سلام من قبلا پوش رو از روی لینک راه اندازی کردم اما متاسفانه خیلی مشکل داره یک بار اجرا میشه 50 بار نمیشه :| میخواستم ببینم این سرویس هم همینجوریه ؟ دوستانی که راه اندازی کردن مشکلی نداشتن ؟‌ چون سرویس لینک بیشتر وقتایی کار میکنن که یا گوشی رو تازه روشن کرده باشی یا توی برنامه باشی !! (8 سال پیش)
0 0
خوبه و امکانات زیادی داره اما اون قسمت ایمیل داشتن کاربر کار رو خراب کرده شما در صورت داشتن یک هاست + کمی دانش کدنویسی سمت سرور + یکمی کار کردن با ارسال و دریافت json به راحتی میتونید یه همچین سرویسی رو برای خودتون راه اندازی کنید بدون نیاز به وصل شدن به ایمیل توسط کاربرا و یا حتی بدون استفاده از dependencie خاصی .... (8 سال پیش)
0 0
اگه نیاز داره که حتما جی میل تو گوشی اد شده باشه که بدرد نمیخوره خیلیا این کارو نمیکنن :( (8 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
فرهاد  8 سال پیش
0 0

سلام داداش من چند هفته هست که درگیر این موضوعم دیگه اصلا دارم اعتماد به نفسمو از دست میدم. طبق document سایت onesignale پیش رفتم ولی برنامه ام کرش میکنه نمیدونم چرا

 

این manifest منه

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ir.apps.shop.notific"
android:versionCode="1"
android:versionName="1.0" >

<permission android:name="ir.apps.shop.notific.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="ir.apps.shop.notific.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-sdk android:minSdkVersion="7" />

<application
android:name=".YourAppClass"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".NotificActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<meta-data android:name="onesignal_app_id"
android:value="8ef209b5-e735-4943-bdf3-cd29c8dae299" />
<meta-data android:name="onesignal_google_project_number"
android:value="116022866202" />

<receiver android:name="com.onesignal.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="ir.apps.shop.notific" />
</intent-filter>
</receiver>
<receiver android:name="com.onesignal.NotificationOpenedReceiver" />
<service android:name="com.onesignal.GcmIntentService" />
<service android:name="com.onesignal.SyncService" />
<activity android:name="com.onesignal.PermissionsActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>

</manifest>

این کلاس اپلیکیشن منه

 
 package ir.apps.shop.notific;

import org.json.JSONObject;
import android.app.Application;
import android.util.Log;
import com.onesignal.OneSignal;
import com.onesignal.OneSignal.NotificationOpenedHandler;


public class YourAppClass extends Application {

@Override
public void onCreate() {
super.onCreate();
OneSignal.setLogLevel(OneSignal.LOG_LEVEL.DEBUG, OneSignal.LOG_LEVEL.DEBUG);
OneSignal.startInit(this)
.setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
.init();
}


// Fires when a notificaiton is opened by tapping on it or one is received while the app is runnning.
private class ExampleNotificationOpenedHandler implements NotificationOpenedHandler {

@Override
public void notificationOpened(String message, JSONObject additionalData, boolean isActive) {
try {
if (additionalData != null) {
if (additionalData.has("actionSelected"))
Log.d("OneSignalExample", "OneSignal notification button with id " + additionalData.getString("actionSelected") + " pressed");

Log.d("OneSignalExample", "Full additionalData:\n" + additionalData.toString());
}
}
catch (Throwable t) {
t.printStackTrace();
}
}
}
}


+2 0
سلام اگه از Emulator برای اجرا کردن برنامه استفاده میکنید این مشکل به دلیل عدم وجود Google Play Services بر روی Emulator طبیعیه ، برنامه رو بر روی دستگاه موبایل خودتون نصب کنید و مجددا تلاش کنید . و قطعه کد Onesignal.startInit رو برای اطمینان بیشتر تو ActivityMain هم استفاده کنید. (8 سال پیش)
0 0
همه رقم امتحان کردم نشد همین الان عازم مشهدم برگشتم سورس کد رو براتون میفرستم شاید اشتباهی توش باشه ممنون میشم ایمیل تون رو برام بفرستید (8 سال پیش)
+1 0
مطمئنید که کدهای مربوط به پروژه و Api رو به درستی پیاده سازی کردید ؟ ایمیلم رو توی خصوصی فرستادم . (8 سال پیش)
0 0
من چطور می تونم پیامی که میاد رو روش کلیک شد رو در یک اکتیویتی اطلاعاتشو نشون بدم ؟ و اینکه آیا میشه به یه نفر خاص هم پیام فرستاد یا کلا برای همه پیام میاد؟ (8 سال پیش)
+1 0
برای شخصی سازی نوتیفیکیشن قسمت Documentation سایت رو مطالعه کنید لینک و برای سوال دوم بله میتونید فقط برای فرد یا افراد خاصی نوتیفیکیشن بفرستید . (8 سال پیش)
0 0
خوب چطور میشه برای یه نفر خاص بفرستم؟ بر اساس چی تشخیص میده؟ شماره موبایل یا ... ؟اگر امکانش هست راهنمایی کنید. (8 سال پیش)
0 0
با سلام بنده تمامی مراحلی که گفته شد ر با دقت انجام دادم. و در مرحله آخر که میگه برای تست یه نوتیفیکیشن ارسال بشه ، ارسال میشه ولی چیزی دریافت نمیشه تو برنامه به نظرتون مشکل چیه؟ فک کنم از قسمت داخل برنامه مشکل وجود داشته باشه 1) من کد های مربوط به Gradle رو کپی کردم 2) بعد مقدار OneSignal.startInit(this).init(); رو به اکتیویتی برنامه ام اضافه کردم. 3) در مانیفست که لازم نبود تغییری ایجاد بشه. کار دیگه ای لازم هست که انجام نداده باشم؟ (7 سال پیش)
پاسخ به سوال 
Aref  8 سال پیش
0 0

سلام ، امکانش هست که از طریق یه صفحه php که خودمون ساختیم نوتیفیکیشن بفرستیم ؟ سایت پارسه چنین امکانی داشت 

برای مثال : یه صفحه php میخوام بسازم که نوتیفیکیشن بفرسته و اونو به وردپرس وصل کنم که هر موقع آیتم جدید اضافه شد نوتیفیکیشن بده

+1 0
سلام بله خود وردپرس افزونه OneSignal رو داره که میتونید از تو پنل مدیریت دانلود کنید و قابلیت ارسال نوتیفیکیشن با هر پست جدید رو فعال کنید. (8 سال پیش)
0 0
میشه لینک راهنمای راه اندازی رو بدین ؟ من یکی دیدم واسه نوتیفیکیشن تو دسکتاپ بود و اینکه افزونه وردپرسی امکان این رو داره که با ارسال هر پست یک جیسون خاص ارسال کنم ؟ کلا وردپرس رو بذاریم کنار ، میشه یک صفحه php داشته باشم و از طریق اون خودم نوتیفیکیشن بفرستم بدون اینکه نیاز باشه برم تو سایت oneSignal ؟ (8 سال پیش)
+1 0
لطفا اینجا رو مطالعه کنید لینک (8 سال پیش)
+1 0
سلام الان جدیدا وقتی میخواییم ثبت نام کنیم در آخر مرحله ثبت برنامه در onesignal یه گزینه قرار میده و خودش یه نوتیفیکیشن برای تست میفرسته . بعد میگه کدی که توسط نوتیفیکیشن دریافت میکنید رو در اونجا وارد کنید تا done بشود. ولی برای من اون نوتیفیکیشنی که بصورت تست فرستاده میشه رو دریافت نمیکنه ؟ (7 سال پیش)
0 0
یه سوال.اگه استفاده از این سرویس گوگل نیاز به فعال کردن گوگل داره پس چرا توی گوشی که گوگلش فعال نیست ولی نوتیفیکیشن تلگرام کار میکنه؟ (7 سال پیش)
0 0
من رو اکلیپس استاد میخوام راه بندازم اما هی ارور میده یکی راهنمایی کنه لطفا اصلا هم نشون نمیده ارور از کجاست (7 سال پیش)
پاسخ به سوال 
احسان  7 سال پیش
0 0

دوستان این آموزش برای چند ماه پیش است ، و الان کنسول گوگل تغییرات زیادی داشته!

مثلا توی بخش Create credentials گزینه Server key وجود نداره و اگر api رو روی IP addresses (web servers, cron jobs, etc.) بذاریم به صورت none در میاد و سایت onesignal این کی رو قبول نمیکنه ، کسی میتونه اموزش جدیدی بگذاره ؟

0 0
اگر شما هم مثل من مشکل داشتید توی ساخت Server key پیشنهاد میکنم توی بخش ای پی این سه رو توی سه کادر متفاوت وارد کنید ، 0.0.0.0/0 برای IPv4 0.0.0.0 ::/0 برای IPv6 (7 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .