远程推送流程图⬇️
APNS:苹果推送消息的服务器
Token:服务器端存在的设备的唯一标识
服务器:自己的服务器(第三方:信鸽, 极光, 小米等)
代码实现部分
下载信鸽SDK, 拖到工程中(如果报错按照doc文档添加库文件)
导入头文件
<span style="font-size:18px;">导入头文件
#import "XGPush.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/**
* @author YL
*
* 1.注册通知
* 判断版本
*/
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0f) {
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}else{
/* 系统8.0之前的注册方法 */
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
}
/* 初始化信鸽 */
[XGPush startApp:2200147212 appKey:@"IU2Y3R1P57TV"];
/* 设置角标为零 */
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
/* 2.注册成功获取Token */
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
/* 3.从APP传给服务器设备的Token */
[XGPush registerDevice:deviceToken];
NSLog(@"token ===== %@", [XGPush getDeviceToken:deviceToken]);
/* 设置角标为零 */
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
/* 注册失败返回错误信息 */
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
}
/* 5.发送推送通知收到的消息内容 */
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
}</span>
.p12转.pem方法
打开终端 → 具体操作如⬇️
openssl pkcs12 -in (文件名).p12 -out (文件名).pem -nodes
生成的.pem文件应该是4K的