چابک متناسب با نیاز شما امکانات دیگری را هم در اختیارتان می‌گذارد. در این صفحه می‌توانید از وضعیت اتصال سرور و کلاینت مطلع شوید. رویدادهای اپلیکیشن (ثبت کاربر، نصب و بازدید) و شناسه‌های دستگاه و کاربر را دریافت نمایید. نشان‌هایی (Badge) که روی آیکون اپ شما در دستگاه کاربر نمایش داده می‌شود را می‌توانید مدیریت کنید. همچنین ارسال موقعیت مکانی در هنگام باز شدن اپلیکیشن و مشاهده گزارش‌های چابک را هم می‌توانید پیاده‌سازی کنید. در آخر می‌توانید از وضعیت اپ خود (فورگراند و بک‌گراند بودن آن) آگاه شوید.


دریافت شناسه دستگاه

هر دستگاه در پلتفرم چابک دارای یک شناسه منحصر به فرد می‌باشد، برای دسترسی به این شناسه می‌توانید متد زیر را فراخوانی کنید:

NSString *installationId = [self.manager getInstallationId];

دریافت شناسه کاربر

هر کاربر در پلتفرم چابک دارای یک شناسه منحصر به فرد می‌باشد، برای دسترسی به این شناسه می‌توانید متد زیر را فراخوانی کنید:

[PushClientManager defaultManager].userId;

مدیریت نشان‌ها

بسته به نوع اپلیکیشنی که دارید، بازنشانی badge معنای متفاوتی پیدا می‌کند. به عنوان مثال اگر اپلیکیشن پیام‌رسانی و چت دارید آن موقع، بازنشانی پس از خواندن پیام معنا دارد. در غیر این صورت معمولا بازنشانی پس از فقط باز کردن اپلیکیشن انجام می‌شود. در صورت تمایل می‌توانید شماره badge اپلیکیشنتان را با متد زیر بازنشانی (reset) کنید:

- (void)applicationDidEnterBackground:(UIApplication *)application { 
	[PushClientManager resetBadge]; 
} 
- (void)applicationWillEnterForeground:(UIApplication *)application { 
	[PushClientManager resetBadge]; 
}

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

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

نکته : برای ارسال داده خاصی همراه با انتشار رویداد فوق می توانید داده خود را property به locationOnLaunchWithDictionary داده تا همراه با انتشار رویداد ارسال شود.

[self.manager.enableLocationOnLaunch = YES];

وضعیت اتصال به چابک

پس از فراخوانی manager.addDelegate، می‌توانید از متد زیر برای دریافت رویدادهای داخلی چارچوب چابک استفاده کنید.

برای اطلاع از وضعیت آنلاین یا آفلاین بودن، می‌توانید از متد زیر استفاده کنید:

- (void)pushClientManagerDidChangedServerConnectionState{
	// Called When PushClientManager Connecting State has been Changed
}

- (void)pushClientManagerDidChangeServerReachiability:(BOOL)reachable networkType:(PushClientServerReachabilityNetworkType)networkType{
	// Called When PushClientManager Server Reachability has been Changed
}

برای مثال می‌توانید به نمونه کد زیر توجه کنید:

- (void)pushClientManagerDidChangedServerConnectionState{
    PushClientServerConnectionState _connectionState = self.manager.connectionState;
    switch (_connectionState) {
        case PushClientServerConnectingStartState:
            NSLog(@"Init");
            break;
        case PushClientServerConnectingState:
            NSLog(@"Connecting");
            break;
        case PushClientServerConnectedState:
            NSLog(@"Connected");
            break;
        case PushClientServerDisconnectedState:
            NSLog(@"Disconnected");
            break;
        case PushClientServerDisconnectedErrorState:
            NSLog(@"Error");
            break;
        default:
            NSLog(@"Unknown");
            break;
    };
}

رویداد وضعیت اپلیکیشن

با پیاده‌سازی متدهای زیر قادر به دریافت وضعیت اپلیکیشنتان (ثبت کاربر، نصب و باز شدن اپلیکیشن) خواهید بود.

  • ثبت کاربر:
- (void)pushClientManagerDidRegisterUser:(BOOL)registration{
    NSLog(@"User sucessfully registered.");
}
- (void) pushClientManagerDidFailRegisterUser:(NSError *)error {
    NSLog(@"User not registered because of '%@' error", error);
}
  • نصب:
- (BOOL) application:(UIApplication *) application
                didFinishLaunchingWithOptions:(NSDictionary *) launchOptions{
    ...
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(detectAppNewInstalled:)
                                                 name:kPushClientDetectAppNewInstall
                                               object:nil];
    ...
    
    return YES;
}
- (void) detectAppNewInstalled:(NSNotification *) notification{
    NSLog(@"New Install :  ----------------- %@ ---------------",notification.userInfo);
}
  • بازدید:
- (BOOL) application:(UIApplication *) application
                didFinishLaunchingWithOptions:(NSDictionary *) launchOptions{
    ....
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(detectLaunched:)
                                                 name:kPushClientDetectAppWasLaunched
                                               object:nil];
    ...
    
    return YES;
}
-(void) detectLaunched:(NSNotification *) notification{
    NSLog(@"App launched",notification.userInfo);
}

دریافت وضعیت اپلیکیشن

جهت بررسی وضعیت اپلیکیشن خود در حال اجرا (Background یا Foreground) می‌توانید متد‌های زیر را فراخوانی کنید:

switch (UIApplication.sharedApplication.applicationState) {
	case UIApplicationStateActive:
		NSLog(@"App is active in foreground");
		break;
   
	case UIApplicationStateInactive:
		NSLog(@"App is inactive in foreground");
		break;

	case UIApplicationStateBackground:
		NSLog(@"App is in background");
		break;
    }

فعال‌سازی گزارش‌های چابک

با استفاده از logLevel می‌توانید گزارش‌های چابک را در بخش Debugger Output مشاهده کنید:

[PushClientManager.defaultManager setLogLevel:ChabokLogLevelVerbose];  // enable all logging
[PushClientManager.defaultManager setLogLevel:ChabokLogLevelDebug];    // enable more logging
[PushClientManager.defaultManager setLogLevel:ChabokLogLevelInfo];     // the default
[PushClientManager.defaultManager setLogLevel:ChabokLogLevelWarn];     // disable info logging
[PushClientManager.defaultManager setLogLevel:ChabokLogLevelError];    // disable warnings as well
[PushClientManager.defaultManager setLogLevel:ChabokLogLevelAssert];   // disable errors as well
[PushClientManager.defaultManager setLogLevel:ChabokLogLevelSuppress]; // disable all logging

دقت داشته باشید در نسخه‌های پایین ۲ کتابخانه چابک، باید مانند زیر عمل کنید:

PushClientManager.defaultManager.enableLog = YES;