PushSharp — простая работа с Push Notifications

от автора

К сожалению, топиков-ссылок на Хабре давно нет, так что придётся что-то написать о замечательной библиотеке PustSharp.

Умеет отправлять iOS, Android и Windows 8 Push Notifications (в описании этого нет, но в исходном коде присутствует папка PushSharp.Blackberry, так что может быть и для этой платформы уже работает). B использовании проще уже совсем некуда:

//Create our push services broker var push = new PushBroker();  //Registering the Apple Service and sending an iOS Notification var appleCert = File.ReadAllBytes("ApnsSandboxCert.p12")); push.RegisterAppleService(new ApplePushChannelSettings(appleCert, "pwd")); push.QueueNotification(new AppleNotification()                            .ForDeviceToken("DEVICE TOKEN HERE")                            .WithAlert("Hello World!")                            .WithBadge(7)                            .WithSound("sound.caf"));   //Registering the GCM Service and sending an Android Notification push.RegisterGcmService(new GcmPushChannelSettings("theauthorizationtokenhere")); //Fluent construction of an Android GCM Notification //IMPORTANT: For Android you MUST use your own RegistrationId here that gets generated within your Android app itself! push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE REGISTRATION ID HERE")                       .WithJson("{\"alert\":\"Hello World!\",\"badge\":7,\"sound\":\"sound.caf\"}")); 

Также авторы не поленились поработать над документацией и примерами. Пошаговая инструкция настройки push notifications для iOS оттуда просто замечательна.

Nuget package у этой библиотеки, конечно, есть.

И добавлю от себе, как получить device token при разработке под iOS. После установки Push provision profile, в ваш AppDelegate нужно будет добавить метод:

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {     //тут сохраняем deviceToken, а потом используем при обращении к вашему серверу } 

Для сохранения device token я использую NSUserDefaults (минусов в этом подходе пока не вижу). Единственное, что нужно учесть — token приходит в вышеуказанный метод в виде NSData (при приведении к строке мы получим что-то вроде "<asdfasdf asdfasdf 12341234 wertwert 1234asdf ewrt3456 asdfasfd asdfasdf>"), а нам он нужен будет в виде строки («asdfasdfasdfasdf12341234wertwert1234asdfewrt3456asdfasfdasdfasdf»).

То есть методы для сохранения и получения токена будут выглядеть так:

+(NSString*)getUserDeviceToken{          return [[NSUserDefaults standardUserDefaults] stringForKey:_deviceTokenKey]; }  +(void)setUserDeviceToken:(NSData*)tokenData{      NSCharacterSet *charactersToRemove = [NSCharacterSet characterSetWithCharactersInString:@"<> "];     NSString *result = [[[NSString stringWithFormat:@"%@",tokenData] componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString: @""];          [[NSUserDefaults standardUserDefaults] setValue:result forKey:_deviceTokenKey]; } 

ссылка на оригинал статьи http://habrahabr.ru/post/178775/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *