- PVSM.RU - https://www.pvsm.ru -

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

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

Умеет отправлять 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"}"));

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

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

И добавлю от себе, как получить 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];
}

Автор: BurundukXP

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ios/33653

Ссылки в тексте:

[1] PustSharp: https://github.com/Redth/PushSharp

[2] документацией: https://github.com/Redth/PushSharp/wiki

[3] примерами: https://github.com/Redth/PushSharp/blob/master/PushSharp.Sample/Program.cs

[4] Пошаговая инструкция настройки push notifications для iOS: https://github.com/Redth/PushSharp/wiki/How-to-Configure-&-Send-Apple-Push-Notifications-using-PushSharp

[5] есть: http://nuget.org/packages/PushSharp/

[6] Источник: http://habrahabr.ru/post/178775/