# Windows 8.1 and Windows 10

{% hint style="danger" %}
**This generation of SDK is deprecated and is no longer supported.**\
Information about the [current version can be found here](/integration/integration-of-sdk-v2/push-notifications/windows-uwp.md).
{% endhint %}

## General information

To enable Push Notifications you will have to perform the following actions:

* Add the application to your space in devtodev system
* Activate Windows Messaging Service ang get SID and Client Secret values
* Add SID and Client Secret to the application integration settings in devtodev system
* Integrate devtodev SDK to the application (see the "SDK integration" section to learn more how to integrate and initialize devtodev SDK)
* Add several lines of the code to switch on the push notification in the SDK
* Create a campaign for sending push notifications in "Push" section

## How to get SID and Client Secret

1. Go to the application settings in your Windows Store dashboard\
   ![](https://www.devtodev.com/upload/images/win_integration_0.png)
2. Open Push Notifications submenu in Services menu\
   ![](https://www.devtodev.com/upload/images/win_integration_1.png)
3. Go to Live Services site:\
   ![](https://www.devtodev.com/upload/images/win_integration_2.png)
4. "Package SID" and "Client secret" will be your SID and Client Secret strings respectively\
   ![](https://www.devtodev.com/upload/images/win_integration_3.png)

## Implementation to app

1. Integrate devtodev SDK to your project. Even if you don't need devtodev analytics in your app, you should call DevToDev.SDK.Initialize(string appKey, string appSecret).
2. Add the following source after DevToDev.SDK.Initialize(string appKey, string appSecret) is called:

   ```
   //It is called when push token is received successfully
   PushManager.PushTokenReceived = (pushToken) => {
      //pushToken - the string contains the push token
   };

   //It is called when there is an error in push token delivery.
   PushManager.PushTokenFailed = (error) => {
      //error - the error string. This function will be called when push token have not been obtained.
   };

   //It is called when push notification is received.
   PushManager.PushReceived = (PushType type, IDictionary<string, string> pushAdditionalData) => {
      //type - type of the push message
      //params - IDictionary<string, string> with the custom user parameters form the push message
   };

   //It is called when push notification is opened.
   PushManager.PushOpened = (PushMessage pushMessage, ActionButton actionButton) => {
      //pushMessage - DevToDev.PushMessage. Represents toast notification message
      //actionButton - DevToDev.ActionButton. Windows 10 only! 
      //Represents toast button that was clicked. Could be null if toast body was clicked
   };

   DevToDev.PushManager.Initialize();
   ```

   The PushType can have one of the following values:

   ```
   public enum PushType {
      ToastNotification, //Notification that can be seen by a user. 
      SilentNotification //Raw-notification. A user can't see it.
   }
   ```
3. The control of the current value of a badge. When an app is launched the current value of a badge is reset to zero by default. In order to disable automatic resetting to zero and manually control the value of a badge use the following methods:

   ```
   //Disables automatic clearing of a badge at start. 
   //Must be called before DevToDev.PushManager.Initialize();
   DevToDev.PushManager.AutoClearBadgeOnStart = false; 

   //Decreases the current value of a badge on "number" units.
   DevToDev.PushManager.DecreaseBadge(int number);

   //Clears the current value of a badge.
   DevToDev.PushManager.ClearBadgeCount();
   ```
4. **Attention! There is a difference in the implementation of the elements mentioned below for Windows 8.1+ and Windows 10+ projects.** &#x20;

   **Windows 8.1+:** Put the following source in your Application class (usually it is App.xaml.cs file) at the end of the *OnLaunched(LaunchActivatedEventArgs e)* function. For Example:

   ```
   protected override void OnLaunched(LaunchActivatedEventArgs e) {
      //...other source
      DevToDev.PushManager.HandleToastNavigation(e.Arguments);
   }
   ```

   **Windows 10+:** Put the following source in your Application class (usually it is App.xaml.cs file) at the end of the *OnLaunched(LaunchActivatedEventArgs e) and OnActivated(IActivatedEventArgs args)​* functions. For Example:

   ```
   protected override void OnLaunched(LaunchActivatedEventArgs e) {
      //...other source
      DevToDev.PushManager.HandleToastNavigation(e.Arguments);
   }

   protected override void OnActivated(IActivatedEventArgs args) {
      //...other source
      if (args.Kind == ActivationKind.ToastNotification) {
          var toastArgs = args as ToastNotificationActivatedEventArgs;
          DevToDev.PushManager.HandleToastNavigation(toastArgs.Argument);
      }
   }
   ```
5. Make sure that these functions are enabled in Package.appmanifest of you project (the flag "Toast capable" is enabled by default for Windows 10+ projects, it is absent in the manifest).\
   ![](https://www.devtodev.com/upload/images/IMG_24102016_180635.png)
6. &#x20;Add the following two Background Tasks in Package.appmanifest:\
   ![](https://www.devtodev.com/upload/images/IMG_24102016_182326.png)\
   ![](https://www.devtodev.com/upload/images/IMG_24102016_182253.png)
7. Keep in mind that your application must be built with the same Windows Store preferences you used in Chapter 3.2. In the "Create App Packages" window you have to log in with your Live ID and pick the appropriate application form the list. A file *Package.StoreAssociation.xml* will be added into the Project.\
   ![](https://www.devtodev.com/upload/images/win_integration_4.png)

## Changing the application settings in devtodev system

1\. Proceed to Settings of your app.

![](/files/-M4SYKJsLHcg3f_o-D2o)

2\. Go to PUSH NOTIFICATIONS page in Settings and insert the previously received Package SID and Client secret to appropriate fields in Push notifications section.

3\. If the Package SID and Client secret are correct, you will see the following result:

![](https://www.devtodev.com/upload/images/3%283%29.png)

## Creating a new push notification in devtodev interface

1. Open PUSH NOTIFICATION section and click on "Add new campaign" button
2. Fill in campaign name, select an app for delivery\*
3. Choose the user group to send a message. You can choose existing segment or create a new one
4. Enter toast or tile details
5. Schedule the delivery
6. That's it!

{% hint style="warning" %}
**\*Attention!** You can create a campaign only after at least one push token comes from devtodev SDK integrated to your application. Otherwise the app will not be displayed in the list.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.devtodev.com/integration/integration-of-sdk/push-notifications/windows-8.1-and-windows-10.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
