失败:PushSharp.Apple.ApplePushService - >抛出了“PushSharp.Apple.NotificationFailureException”类型的异常

时间:2015-04-28 06:59:41

标签: ios .net apple-push-notifications pushsharp

我在我的应用程序中使用 PushSharp 来发送推送通知。它适用于Android。

对于苹果iOS - 它不起作用,我们使用带密码的开发证书文件。 最初我们使用了错误的密码,之后我们发现了这个问题并修复了。

它正在收到以下错误信息

Channel Created for: PushSharp.Apple.ApplePushService Failure: PushSharp.Apple.ApplePushService -> Exception of type 'PushSharp.Apple.
NotificationFailureException' was thrown. -> {"aps":{"alert":"Hello World!","badge":7,"sound":"default"}}

错误状态代码:8

错误说明:无效令牌

由我们的供应商开发的应用程序和我们正在进行的推送通知。 供应商使用一些PHP代码发送推送通知。 要推送通知,他们使用的是带有Laravel框架和库的PHP服务器:https://github.com/davibennun/laravel-push-notification

我已经在我的iPhone设备上安装了该应用程序,他们发送测试推送通知,它正常工作。

但是我试图使用Pushsharp框架发送它不起作用。

他们说开发证书文件是正确的,它工作正常。

我已经尝试了所有可能的选项,但我没有得到任何线索,为什么它的行为奇怪与开发证书.p12。请帮我解决这个问题。

我们用于开发的代码:

var push = new PushBroker();
    var appleCert = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "xxxxPass.p12"));
    push.RegisterAppleService(new ApplePushChannelSettings(appleCert, "xxxx12345")); //Extension method
    push.QueueNotification(new AppleNotification()
                               .ForDeviceToken("a51b4e80d12df0946d10413991ce1f7ab57c05bab8a292fc703ded34ce77b91f")
                               .WithAlert("Hello World!")
                               .WithSound("default")
                               .WithBadge(7));

1 个答案:

答案 0 :(得分:1)

此问题是由于证书文件无效。

以下步骤是在IOS应用程序中从我这边完成的。

  1. 使用Object-c Class创建了一个新的Xcode项目Single View Application。
  2. Drog并Droped WebView控件并映射到视图控制器。
  3. 在“ViewController.h”文件中,我添加了以下代码。 @property(非原子,强)IBOutlet UIView * site;

  4. 在“AppDelegate.h”文件中,我添加了以下代码。

  5.   
        
    • (void)viewDidLoad {[super viewDidLoad];
    •   

    NSURL * url = [NSURL URLWithString:@“https://www.xxxxx.com”]; NSURLRequest * requestURL = [NSURLRequest requestWithURL:url];

    [_ site loadRequest:requestURL]; }

    1. 在“AppDelegate.m”文件中,我添加了以下代码。
    2. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          // Register for Remote Notifications
           if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
          {
              // iOS 8 Notifications
              [application registerUserNotificationSettings:[UIUserNotificationSettings
      
           

      settingsForTypes:(UIUserNotificationTypeSound |   UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)   类别:无]];

              [application registerForRemoteNotifications];
          }
          else
          {
              // iOS < 8 Notifications
              [application registerForRemoteNotificationTypes:
               (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
          }
      
          return YES;
      }
      
      1. 在xxxx Developer apple帐户中 - 创建了一个新的App ID 姓名:XXX 捆绑ID:com.xxxxdubai.xxxx 推送通知已启用开发。 使用以下步骤创建新的开发SSL证书。 使用CRS文件创建证书Keychain Access - &gt; Certificate Assitant - &gt;从证书颁发机构请求证书...生成的证书签名请求...请求文件。 在iOS Cerfiicate文件下上传并生成CRS文件。
      2. 它是在“证书开发”部分下自动创建的 名称:com.xxxxdubai.xxxx 类型:APNs开发iOS

        1. 然后创建临时配置文件以进行开发 名称:XXXX开发 类型:Ios开发 应用ID:已选择xxxx应用ID 证书:选择xxxx iOS开发 设备:选择我的velus-iPhone设备
        2. 成功生成配置文件。

          1. 然后我确实将配置文件添加到Keychain访问登录并导出带密码的apns.dev.cert.p12文件。
          2. 在Xcode APP项目中,构建设置更改为选择了配置文件(我导出并注册的那个)
          3. 选择模拟器作为我的iPhone设备并运行项目已成功安装并在我的手机上启动应用程序。
          4. 从应用程序显示的自动第一时间警报消息,用于向APNS服务器注册推送通知,并接收并记录在调试区域中显示的新设备令牌。
          5. 使用新证书apns.dev.cert.p12与PushShap框架进行测试,新设备ID推送通知成功运行。