创建 App ID
- 在证书管理界面创建相应的 APPID,Bundle ID 与项目对应即可
- 创建 App ID,如果已经自动创建好了可以跳过这一步骤
- 在创建 App ID 的时候在 App Services 内勾选 Push Notifications 功能,申请推送权限
到这里 App ID 已经创建完毕
配置和下载证书
选择证书管理界面 点击 ➕ 创建一个新的证书
我们直接选择创建一个测试证书
- 点击 download 获取 aps.cer 证书文件
到此推送的 p12 证书已经创建完毕了,可将该证书上传至服务器
Provisioning Profile 的创建
- 开发测试环境
- 上传到 appstore 的生产环境(如果是企业证书这里会是 In House)
- 用于内部测试的生产环境
选择所属的开发者证书
为该 Provisioning Profile 选择将要安装的设备
给该 Provisioning Profile 填写名称
创建完成点击下载
线上环境的创建方式相同,你可以在填写名称时表明时测试环境还是先上环境
Xcode 配置
- 导入对应的 Provisioning Profile debug 导入沙盒环境的 Provisioning Profile,release 导入生产环境的 Provisioning Profile
- 在 xcode Capabilities 开启推送功能
接入云信 apns 推送
完成相应证书配置
登陆云信后台 云信后台,进入证书管理界面
- 将导出的好的 p12 证书上传到云信后台,需要注意证书一定要与项目中的环境对应,沙盒证书对应测试环境,生产证书对应线上环境,如果出现错误会导致推送收不到。
#复习一下导出 p12 证书
- 点击 download 获取 aps.cer 证书文件
到此推送的 p12 证书已经创建完毕了,可将该证书上传至服务器
编写推送代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#import "AppDelegate.h" #import "NIMSDK.h"
@interface AppDelegate () <NIMLoginManagerDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"%@",launchOptions); #if defined(DEBUG)||defined(_DEBUG) [[NIMSDK sharedSDK] registerWithAppID:@"你的appkey" cerName:@"云信后台上传的测试证书名"]; #else [[NIMSDK sharedSDK] registerWithAppID:@"你的appkey" cerName:@"云信后台上传的线上证书名"]; #endif [[[NIMSDK sharedSDK] loginManager] addDelegate:self]; [self registerAPNs]; [[[NIMSDK sharedSDK] loginManager] login:@"account" token:@"password" completion:^(NSError *error) { NSLog(@"%@",error); }]; return YES; }
- (void)onLogin:(NIMLoginStep)step{ NSLog(@"%ld",(long)step); }
- (void)registerAPNs { if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerForRemoteNotifications)]) { UIUserNotificationType types = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert; UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { UIRemoteNotificationType types = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge; [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types]; } }
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [[NIMSDK sharedSDK] updateApnsToken:deviceToken]; NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken: %@", deviceToken);
} - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ NSLog(@"receive remote notification: %@", userInfo); } - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"fail to get apns token :%@",error); }
@end
```
|