آموزش کامل و تصویری پیاده سازی سرویس OneSignal + پاسخگویی مشکلات
سلامی گرم دارم خدمت دوستان برنامه نویس عزیز ، امیدوارم حالتون خوب باشه و روز به روز تو زمینه برنامه نویسی پیشرفت کنید.
همونطور که اطلاع دارید سرویس پوش نوتیفیکیشن 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 کلیک کنید.
همونطور که میبینید پوش نوتیفیکیشن ما با موفقیت ارسال شد.
عکس دستگاه و کارکرد درست پوش نوتیفیکیشن :
تحویل پوش نوتیفیکیشن بسیار سریع و در همان لحظه انجام گرفت و همینطور آمار دقیق هم قابل مشاهده است.
در منوی چپ صفحه امکانات جالب دیگری مانند زمان بندی و یا مشاهده کاربران و آخرین فعالیت آن ها و ... وجود داره که می تونید استفاده کنید.
امیدوارم از این آموزش لذت برده باشید و بتونید به خوبی ازش استفاده بکنید.
برای به هم نخوردن نظم تایپیک از دکمه تشکر استفاده کنید.
هر مشکل یا سوالی که داشتید میتونید در همین تایپیک مطرح بفرمایید.








سلام داداش من چند هفته هست که درگیر این موضوعم دیگه اصلا دارم اعتماد به نفسمو از دست میدم. طبق 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();
}
}
}
}

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

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