Soru & Cevap

Turkcell Pus Notification ...

02.09.2014 - 09:11

Öncelikle bu hizmeyi sağlayan Turkcell' e bir kez daha teşekkür ederim. Yalnız aklıma takılan bir kaç nokta var, AppDelegate' te yer alan didFinishLaunching' e tanımlamaları yaptım...

[code]
#import <TCellPushNotification/TCellNotificationSettings.h> #import <TCellPushNotification/TCellNotificationManager.h> - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { TCellNotificationSettings* settings = [[TCellNotificationSettings alloc] initWithAppId:@"AppId" secretKey:@"SecretKey" notificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; TCellNotificationManager* man =[TCellNotificationManager sharedInstance]; man.notificationSettings = settings; [man registerApplicationForRemoteNotificationTypes]; return YES; }
[/code]

AppDelegate' e gerekli metodları ekledim.

[code]
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken { NSString *token = [[newDeviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; token = [token stringByReplacingOccurrencesOfString:@" " withString:@""]; NSLog(@"My Device token: %@",token); [[TCellNotificationManager sharedInstance] setNotificationDeviceTokenWithData:newDeviceToken]; } - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { NSString *str = [NSString stringWithFormat: @"Error: %@", err]; NSLog(@"Error %@",str); }
[/code]

Kayıt işlemini didRegisterForRemoteNotificationsWithDeviceToken metoduna ekledim. Kayıt işlemlerini gerçekleştirdim.

[code]
[[TCellNotificationManager sharedInstance] registerDeviceWithCustomID:@"" genericParam:@"genericParamTest" completionHandler:^(id obj) { if ([obj isKindOfClass:[TCellRegistrationResult class]]){ TCellRegistrationResult *result = (TCellRegistrationResult*)obj; if (result.isSuccessfull){ NSLog(@"Device is registered to push server."); }else{ NSLog(@"Error: %@ Status Code: %@", [result.error localizedDescription],result.resultCode); } } }];
[/code]

Device Tokenler sağlıklı bir şekilde kayıt oluyor. Fakat bu noktadan sonra Uygulamayı cihazından kaldıran kullanıcıların Token'lerinin listeden düşmesini istiyorum. Github' ta yer alan açıklamalarda yer alan "Kayıt olmanın yanı sıra bir uygulama push bildirimleri almayı kesmek te gerekebilir. Push Server kaydığını kaldırmak için unRegisterDeviceWithCompletionHandler: metodu çağırılmalıdır. Dönen cevap nesnesi Register metodu ile aynıdır."  açıklaması ile altında yer alan kod örneği;

[code]
[[TCellNotificationManager sharedInstance] unRegisterDeviceWithCompletionHandler:^(id obj) { if ([obj isKindOfClass:[TCellRegistrationResult class]]){ TCellRegistrationResult *result = (TCellRegistrationResult*)obj; if (result.isSuccessfull){ NSLog(@"Device is unregistered from push server."); }else{ NSLog(@"Error: %@ Status Code: %@", [result.error localizedDescription],result.resultCode); } } }];
[/code]

Bu örnek kodları nerede nasıl kullanacağım bu noktayı hiç anlamadım. RootViewController' da manuel bir olarak bir buton ekleyerek kullanıcının mı kaydını silmesini bekleyeceğim? Kısacası uygulamaların kaldırıldığı cihazların token' larının listeden düşmesini istiyorum. Biraz uzun oldu sanırım :)

 

8 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user ekucet
ekucet
07.09.2014 - 08:19

Hala bir çözüm bulamadım. Yardımcı olacak bir arkadaş arıyorum :)

Erkam KÜCET
12.09.2014 - 09:11
Çözümü buldum farklı bir sağlayıcı kullanıyorum :)