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

Failure: PushSharp.Apple.ApplePushService -> Exception of type 'PushSharp.Apple.NotificationFailureException' was thrown

我在我的应用程序中使用 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"}}

错误状态code:8

错误说明:令牌无效

我们的供应商之一开发的应用程序和我们从我们这边做的推送通知。 供应商使用正在运行的 PHP 代码发送推送通知。 为了推送通知,他们使用 PHP 服务器和 Laravel 框架和库: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));

这个问题是因为证书文件无效。

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

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

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

  • (void)viewDidLoad { [super viewDidLoad];

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

[_网站loadRequest:requestURL]; }

  1. 在“AppDelegate.m”文件中,我添加了以下代码。
- (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) categories:nil]];

        [application registerForRemoteNotifications];
    }
    else
    {
        // iOS < 8 Notifications
        [application registerForRemoteNotificationTypes:
         (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
    }

    return YES;
}
  1. 在xxxx Developer apple account – created a new App ID Name:xxx 捆绑 ID:com.xxxxdubai.xxxx 为开发启用推送通知。 使用以下步骤创建新的开发 SSL 证书。 使用 CRS 文件 Keychain Access 创建证书 -> Certificate Assitant -> Reqest a Certificate From a Certificate Authority ...生成的 CertificateSigningReq ...请求文件。 已在 iOS 证书文件下上传 CRS 文件并生成。

它是在证书开发部分自动创建的 姓名:com.xxxxdubai.xxxx Type:APNs 发展 iOS

  1. 然后创建临时开发配置文件 姓名:XXXX开发 类型:Ios 开发 App ID: selected xxxx app id 证书:选定xxxxiOS开发 设备:选择了我的 velus-iPhone 设备

已成功生成配置文件。

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