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

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

阅读 3.1k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题