راهاندازی چابک
ویرایش
مراحل راهاندازی چابک
برای راهاندازی چابک باید سه مرحله زیر را به ترتیب انجام دهید تا بتوانید دستگاه خود را در پنل چابک مشاهده کنید :
- مقداردهی اولیه
- ثبت کاربر
- متدهای ضروری
نکته :
جهت راهاندازی و استفاده پوش محتوا (Rich Notification
) وارد صفحه پوش محتوا شوید.
نکته
: تمامی متدهایی که در این بخش بیان میشود باید به کلاسAppDelegate
اضافه شده و متدهای چابک باید درdelegate
متدdidFinishLaunchingWithOptions
فراخوانی شوند.
پروژه Starter، به شما کمک میکند بدون هیچ کد اضافهای و فقط با اجرا آن، از پلتفرم چابک استفاده کنید. همچنین به کمک پروژه فوق از نحوه صحیح پیاده سازی متدهای چابک آشنا خواهید شد.
۱- مقداردهی اولیه
برای دریافت یا ارسال پیام از/به سرور چابک، لازم است یک نمونه از کلاس AdpPushClient بسازید و آن را مقداردهی نمایید. یکی از بهترین روشها برای ساختن کلاینت چابک استفاده از کلاس اپلیکیشن پروژه شماست، زیرا فراخوانی این متد فقط یکبار کافی ست. به قطعه کد زیر دقت کنید :
#import <AdpPushClient/AdpPushClient.h>
@interface AppDelegate () <PushClientManagerDelegate, PushClientManagerDelegate>
@property (nonatomic, strong) PushClientManager *manager;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
_manager = [PushClientManager defaultManager];
...
return YES;
}
...
@end
import AdpPushClient
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, PushClientManagerDelegate {
var window: UIWindow?
var manager: PushClientManager?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
manager = PushClientManager.default()
...
return true
}
...
}
متد setDevelopment
مشخص میکند که برنامه به محیط آزمایشی چابک متصل شود یا به محیط عملیاتی. این موضوع بستگی به این دارد که حساب کاربری شما روی کدام محیط تعریف شده باشد.
نکته
: توجه داشته باشید هنگامی که گواهی sandbox اپل را در پنل تستی قرار میدهید، فقط امکان دریافتCloud Messaging
در حالتdebug
وجود خواهد داشت. اما اگر گواهی production اپل را در محیط عملیاتی قرار دهید، زمانیCloud Messaging
را دریافت خواهید کرد که اقدام به ساخت ipa از پروژه خود کرده و از طریق TestFlight یا Enterprise اپلیکیشن خود را نصب کنید.
نکته
: به طور کلی چابک شامل ۲ محیط تست (سندباکس) و عملیاتی میباشد. حسابهای رایگان چابک (تا ۳۰ هزار کاربر) بر روی محیط سندباکس و حسابهای پریمیوم روی عملیاتی قرار میگیرند. کلاینت چابک به صورت پیشفرض بر روی حالت تست (sandbox) میباشد. برای تغییر به محیط عملیاتی (setDevelopment:NO
) باید از پنل بخش تنظیمات درخواست خود را ثبت نمایید تا پس از تایید، اطلاعات جدید حسابتان (AppId, APIKey, Username و Password) تعیین گردد.
[PushClientManager setDevelopment:YES];
PushClientManager.setDevelopment(true)
به منظور استفاده از پلتفرم چابک، ابتدا باید متد registerApplication
را فراخوانی کرده و مقادیر مورد نیاز جهت فعال سازی کتابخانه چابک را وارد نمایید. در این متد بجای پارامترهای YOUR_APP_ID
, YOUR_API_KEY
, SDK_USERNAME
, SDK_PASSWORD
مقادیر مربوط به حساب چابک خود را که در بخش تنظیمات پنل است، وارد نمایید. نحوه ایجاد حساب در بخش پیشنیازها توضیح داده شده است. در صورت داشتن حساب چابک هم میتوانید این مقادیر را از پنل بخش تنظیمات قسمت دسترسی و توکنها بردارید.
همانند کد زیر، متد registerApplication
را در کلاس AppDelegate
و در متد didFinishLaunchingWithOptions
فراخوانی کنید :
[_manager registerApplication:@"APP_ID"
apiKey:@"API_KEY(SDK_KEY)"
userName:@"SDK_USERNAME"
password:@"SDK_PASSWORD"];
manager?.registerApplication("APP_ID", apiKey: "API_KEY(SDK_KEY)", userName: "SDK_USERNAME", password: "SDK_PASSWORD")
جهت دسترسی به delegateهای
چابک باید متد addDelegate
را همانند کد زیر فراخوانی کنید :
[_manager addDelegate:self];
manager?.addDelegate(self)
چابک برای فهمیدن نحوه باز شدن برنامه نیاز به قطعه کد زیر دارد، بنابراین فراخوانی این کد ضروری میباشد:
//Check app was launch by clicking on Notification.
if ([_manager application:application didFinishLaunchingWithOptions:launchOptions]) {
NSLog(@"Application was launch by clicking on Notification...");
}
//Check app was launch by clicking on Notification.
let launchByNotification = (manager?.application(application, didFinishLaunchingWithOptions: launchOptions))!
if launchByNotification{
print("Application was launch by clicking on Notification...")
}
۲- ثبت کاربر
با استفاده از متد registerUser
میتوانید یک نام کاربری به هر کاربر اختصاص دهید. این متد با دو امضای متفاوت وجود دارد: امضای اول که تنها شناسه کاربر
را گرفته و کاربر را با آن شناسه روی سرور چابک ثبت نام میکند.
نکته
: متدregisterUser
باید فقط یک بار در طول اجرا اپلیکیشن فراخوانی شود. بعنوان مثال، اگر اپلیکیشن شما دارای صفحه ثبت نام است، متدregisterUser
را در اینUIViewController
فراخوانی کنید و و هم پس از ثبت نام، درAppDelegate
، متدregisterUser
را فراخوانی کنید تا با شناسه ثبت نام شده هر بار به سرور چابک متصل شود.
نکته امنیتی
: مقدارUSER_ID
را هرگز به صورت خام درNSUserDefaults
ذخیره نکنید، چون این مقدار شناسه معنادار میباشد و میتوان با آن کاربر را روی چابک ثبتنام کرد. برای این منظور میتوانید از متدPushClientManager.default().userId
چابک استفاده کنید که شناسه کاربر را به صورت رمزنگاری شده نگهمیدارد.
[self.manager registerUser:@"USER_ID"];
self.manager?.registerUser("USER_ID")
نکته
: متغیرUSER_ID
شناسه کاربر برای ثبت نام در چابک میباشد و ارسال پیام به کاربران توسط همین شناسهها و بدون استفاده از توکن یا شناسه گوشی، به سادگی امکان پذیر خواهد بود شناسه کاربری می تواند هر فیلد باارزش و معنادار برای کسب و کار شما باشد که کاربر خود را با آن شناسایی میکنید.شماره موبایل، کدملی، شماره حساب و یا ایمیل
مثالهایی از شناسههای کاربری مناسب در موارد واقعی هستند.
نکته
: کاراکترهای #,+,*,\,/
و فاصله درUSER_ID
مجاز نیستند، همچنین طول این رشته نباید کمتر از ۳ و بیشتر از ۳۲ کاراکتر باشد.
امضای دوم که علاوه بر شناسه کاربر، لیستی از نام کانالهایی که کاربر باید روی آنها عضو شود را نیز دریافت می کند. با ثبت نام در این کانالها کاربر پیامهای ارسالی روی آنها را دریافت خواهد نمود.
[self.manager registerUser:@"USER_ID" channels:@[@"YOUR_CHANNEL" ]];
self.manager.registerUser("USER_ID", channels: ["YOUR_CHANNEL"])
۳- متدهای ضروری
در مرحله آخر شما باید قطعه کد زیر را در کلاس AppDelegate
قرار دهید تا کتابخانه چابک بتواند راهاندازی شود، سه متد فوق برای دریافت token از سرویس APNs
اپل میباشد که چابک برای ارسال پوش نوتیفیکشن به آن نیازمند است.
نکته
:پس از قرار دادن کدهای زیر در AppDelegate، اطلاعات کاربر درپنل
چابک مربوط به حساب برنامه، در قسمت مشترکین، قابل مشاهده خواهد بود و شما میتوانید از پنل به کاربرمسیج
وپوش
بفرستید.
#pragma mark - Notification AppDelegation
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
// Hook and handle failure of get Device token from Apple APNS Server
[self.manager application:application
didFailToRegisterForRemoteNotificationsWithError:error];
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
// Manager hook and handle receive Device Token From APNS Server
[self.manager application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{
// Manager hook and Handle iOS 8 remote Notificaiton Settings
[self.manager application:application didRegisterUserNotificationSettings:notificationSettings];
}
//MARK : Notification AppDelegation
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
self.manager?.application(application, didFailToRegisterForRemoteNotificationsWithError: error)
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
self.manager?.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
}
@available(iOS 8.0, *)
func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) {
self.manager?.application(application, didRegister: notificationSettings)
}
نحوه صحیح پیاده سازی متدها در قالب پروژه Starter پیاده سازی شده است.
متد حذف کاربر
برای حذف دستگاه کاربر از سرور چابک میتوانید از متدهای زیر استفاده کنید:
[PushClientManager.defaultManager unregisterUser];
PushClientManager.default().unregisterUser()
رویداد ها:
با استفاده از دو رویداد pushClientManagerDidRegisterUser
و pushClientManagerDidFailRegisterUser
می توانید از ثبت نام و یا مشکل به وجود آماده در عملیات ثبت نام اطلاعات لازم را دریافت کنید :
- (void)pushClientManagerDidRegisterUser:(BOOL)registration{
// called when PushClientManager Registered user Successfully
}
- (void)pushClientManagerDidFailRegisterUser:(NSError *)error{
// Called When PushClientMangager fail in registerApplication:appVersion:userName:password:
// Or - registerUser:userId and registerAgainWithUserId:userId
NSLog(@"%@ %@",@(__PRETTY_FUNCTION__),error);
// OR
NSLog(@"%@ %@",@(__PRETTY_FUNCTION__),self.manager.failureError);
}
func pushClientManagerDidRegisterUser(_ registration: Bool) {
}
func pushClientManagerDidFailRegisterUser(_ error: Error!) {
}