Processing multiple Notifications with PushSharp f

2019-02-16 01:48发布

问题:

I have implemented a windows service that runs every 3 minutes and polls a database for notifications that are ready to be sent. I collects them into a list determines whether it is an ios or an android notification and then call the PushBroker (PushSharp solution is included as a compiled solution in my solution project) I then iterate the items in the list to process as follows:

    static void ProcessIOS(List<Client> IOS)
   {
       PushBroker push = new PushBroker();
       push.OnNotificationSent += NotificationSent;
       push.OnChannelException += ChannelException;
       push.OnServiceException += ServiceException;
       push.OnNotificationFailed += NotificationFailed;
       push.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
       push.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged;
       push.OnChannelCreated += ChannelCreated;
       push.OnChannelDestroyed += ChannelDestroyed;
       foreach (var entry in IOS)
           {
               string dev = entry.Device_Id.ToString();
               string load = entry.Push_Payload.ToString();
               int count = entry.Unread_Count;
              var appleCert = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../../productionfile.p12"));
               push.RegisterAppleService(new ApplePushChannelSettings(true, appleCert, "password")); //Extension method
                     push.QueueNotification(new AppleNotification()
                                          .ForDeviceToken(dev)
                                          .WithAlert(load)
                                          .WithBadge(count));
                  }

   }

The messages are sent successfully, however, the issue I am having is 1. trying to retrieve the responses when message was sent successfully, or failed, reason for failure etc... these are delegates within the pushsharp code so that I can log the responses to our database. For clarification... I need to know what entry attempt(deviceID) the error responses are from. I am unable to tell by the generated messages from the notificationsent delegates since the data is not linked to any particular deviceid delivery attempt. 2. I also want to be able to keep the pushsharp code as is without modifications and call methods from my code to reduce merging issues when any updates are made to pushsharp code in future. Any Suggestions? If anyone can give me any examples on how to use the response events and delegates to retrieve information for each notification send attempt, I would appreciate it. thank you.

回答1:

I did not get any replies but with further research I was able to resolve my issue with the failed sucesses and was able to successfully send out notifications with no errors. The solution was to regenerated my certificates. Since I am using a windows server for my push notification server The following steps will guide you to generate an APNs certificate from a Windows Server. If you have already generated your certificate from a Mac OS X workstation, you can skip this section and upload your certificate to the Push Notification Server.

Step 1—Generating a Certificate Signing Request (CSR) 1. Go to Start > Administrative Tools > Internet Information Services (IIS) Manager, and select the server name. 2. Double-click Server Certificates.

Note: The version of IIS server is 7.0 in this document.

  1. From the Actions pane on the right, click Create Certificate Request. The Request Certificate wizard appears.

  2. In the Distinguished Name Properties window, type the following: • Common Name—the name associated with your Apple Developer account • Organization—the legally registered name of your organization/company • Organizational unit—the name of your department within the organization • City/locality—the city in which your organization is located • State/province—the state or province in which your organization is located • Country/region—the country or region in which your organization is located

  3. Click Next. Cryptographic Service Provider Properties window appears.

  4. Select Microsoft RSA SChannel Cryptographic Provider in the Cryptographic service provider field and 2048 in the Bit length field, and then click Next.

  5. Select a location where you want to save the certificate request file. Make sure to remember the filename and the location where you save the file.

  6. Click Finish. You have now created a CSR request and are ready to upload it to your Apple development portal. Step 2— Uploading CSR to your Apple development portal and generate the APNs certificate Step 3— Downloading and Installing your APNs certificate

  7. Click Download to save the .cer file to your computer.

  8. Copy the .cer certificate file to the same Windows Server computer where you created the certificate request file.

  9. Go to Start > Administrative Tools > Internet Information Services (IIS) Manager, select the server name, and then double-click Server Certificates
  10. From the Actions pane on the right, click Complete Certificate Request. The Complete Certificate Request wizard appears.

  11. Select the .cer certificate file that you downloaded from the Apple Developer Portal, and type the name of your application (e.g. com.xxxx.xxxxx) in the Friendly name field.

Tip: The friendly name is not a part of the certificate itself, but is used by the server administrator to easily distinguish the certificate. 6. Select OK. The certificate will be installed on the server. 7. Verify that your Apple Production Push Services certificate appears on the Server Certificates list.

A. If you can see the certificate, follow the next steps to export the certificate and upload it to the Push Notification Server. 8. Right-click on the certificate in the Server Certificates list, and then click Export.

  1. Select the location where you want to save the file, choose a password for exporting, and then click OK. (Export as a .pfx)

Tip: If you only have the option to save as a .cer file rather than a .pfx, then you are not correctly exporting the certificate. Make sure you selected the correct file to export. If you still do not have the option to export as a .pfx go to step B. below. Note: Make sure to remember the password, or keep it in the secure place. The password will be required when uploading the certificate to the Push Notification Server. After completing all these steps, you should have the following items: • APNs certificate (.pfx format, not .cer format) • The password that you set when exporting the certificate You are now ready to upload your certificate to Push Notification Server if you are not on that server already.

B. If you DON’T can see the certificate in the Server Certificate UI as shown above or DO NOT have the option to export as a .pfx from that UI, follow the next steps to export the certificate and upload it to the Push Notification Server. 8 . Go to Microsoft Managenment console 9. On the Start Menu, click Run, type MMC, and then click OK. Microsoft Management Console opens with an empty console (or administrative tool) as shown in Figure 1 below. The empty console has no management functionality until you add some snap-ins. The MMC menu commands on the menu bar at the top of the Microsoft Management Console window apply to the entire console.

  1. Click File->Open and select Console1.msc and Open

  2. Right click on the certificate you want to export select All Tasks-> Export

  3. Click Next on the Certificate Export Wizard

  4. Choose Yes, export the private key
  5. Warning: DO NOT select Delete private key
  6. Select, Personal Information Exchange - PKCS #12 (.PFX) if not already selected by default.
  7. Browse to the location where the .cer is residing on your machine
    1. Select the location where you want to save the file, choose a password for exporting, and then click OK. (Export as a .pfx)
  8. Go to the exported .pfx file and rename extension to .p12.

  9. Place file in root directory where Push Notification Engine is installed (e.g. C:\ or D:)