react-native 集成阿里云推送的问题

发布于 2022-09-12 23:47:28 字数 3178 浏览 24 评论 0

App需要集成推送的功能,由于不太懂原生ios,导致遇到问题不知道如何排查问题。

我在阿里云官网注册了移动推送服务,并且创建了应用,拿到了appKey和appSecret。也配置上传了推送证书,按照react-native-aliyun-push添加了相应的代码。但是推送的时候还是提示无apns token,推送失败。模拟器、真机下都不行。
image.png

开发环境:

"react": "17.0.1",
"react-native": "0.64.0",
"react-native-aliyun-push": "^1.0.22",
"xcode": "12"

看阿里云的官网解释说无apns token可能是证书不对,但是我是按照阿里云官网说明配置的推送证书,应该是没有错。然后说是有可能推送通道没有初始化成功,但是不知道怎么验证初始化有没有成功。没看到哪里有输出错误日志,应该是没有初始化化成功。

这是Appdelegate.m文件的配置代码

#import "AppDelegate.h"
#import "AliyunPushManager.h"
#import "RNSplashScreen.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [self.window makeKeyAndVisible];
  [RNSplashScreen show];
  //AliyunPush apikey and apisecret
  [[AliyunPushManager sharedInstance] setParams:@"333439311"
                                                              appSecret:@"8e3d37e16c7641e79d98832eb53b7715"
                                                              lauchOptions:launchOptions
    createNotificationCategoryHandler:^{
      //create customize notification category here
  }];
  return YES;
}
// 下面是为AliyunPush添加的代码

// APNs注册成功回调,将返回的deviceToken上传到CloudPush服务器
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
  [[AliyunPushManager sharedInstance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}


// APNs注册失败回调
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
  [[AliyunPushManager sharedInstance] application:application didFailToRegisterForRemoteNotificationsWithError:error];
}

// 打开/删除通知回调
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
{
  [[AliyunPushManager sharedInstance] application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}


// 请求注册设定后,回调
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
  [[AliyunPushManager sharedInstance] application:application didRegisterUserNotificationSettings:notificationSettings];
}
// 添加结束

react-native-aliyun-push的`readme里有这么一句话image.png
但是我添加了之后项目就编译不了,不知道是不是因为RN是最新的版本的不需要添加这个

我把xcode里的日志调试出来了,从下面的第一张图可以看出来模拟器是不支持远程推送的,然后从第二张图可以看出来推送通道应该是初始化成功了,因为"APNS注册失败的回调执行了"
failed-sumulator.png
WX20210519-173555@2x.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海拔太高太耀眼 2022-09-19 23:47:28

需要这里配置一下:
image.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文