You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic 3中如何获取iOS设备Token(仅APNs相关)

Ionic3对接APNs获取iOS设备Token指南

嘿,刚好对这个场景熟,来给你唠清楚~首先明确一点:iOS的推送设备Token是由APNs直接生成并返回给你的应用的,你不需要自己生成,只要按照流程向APNs注册就能拿到。苹果官方的推送机制里,这个Token是APNs用来唯一标识设备和应用组合的凭证,原生iOS里调用UIApplication.shared.registerForRemoteNotifications()后,APNs就会返回这个Token,咱们Ionic3的插件就是封装了这个原生逻辑。

接下来给你说具体的实现步骤,都是Ionic3环境下的实操流程:

1. 安装必要的插件

因为Ionic3的版本比较早,得装对应兼容版本的插件:

  • 先装Cordova推送插件:
    cordova plugin add cordova-plugin-push@2.3.0
    
  • 再装Ionic Native的Push封装(对应Ionic3的3.x版本):
    npm install @ionic-native/push@3.12.1
    

2. 在App模块中注册Push服务

打开src/app/app.module.ts,导入并把Push添加到providers数组里:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
// 导入Push
import { Push } from '@ionic-native/push';

@NgModule({
  declarations: [
    MyApp
    // 你的页面组件
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp
    // 你的页面组件
  ],
  providers: [
    // 注册Push服务
    Push,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]
})
export class AppModule {}

3. 初始化推送并获取Token

在你需要的页面或者全局服务里,初始化Push并监听registration事件来获取Token:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Push, PushObject, PushOptions } from '@ionic-native/push';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  constructor(public navCtrl: NavController, private push: Push) {
    // 页面加载时初始化推送
    this.initPushService();
  }

  initPushService() {
    // 配置iOS推送选项
    const pushOptions: PushOptions = {
      ios: {
        alert: 'true', // 允许弹窗提醒
        badge: true, // 允许角标
        sound: 'true', // 允许声音
        production: false // 开发环境设为false,上线改为true
      }
    };

    // 初始化Push实例
    const pushObject: PushObject = this.push.init(pushOptions);

    // 监听注册成功事件,获取Token
    pushObject.on('registration').subscribe((regData: any) => {
      console.log('设备Token拿到啦:', regData.registrationId);
      // 这里把regData.registrationId发送到你的后端服务器存起来,后续用来发推送
    });

    // 监听错误事件,排查问题
    pushObject.on('error').subscribe(error => {
      console.error('推送注册出错啦:', error);
    });
  }
}

关键注意事项

  • 必须在苹果开发者后台配置好推送证书(开发和生产环境要分别配置),不然APNs不会返回Token
  • 一定要用真机测试,iOS模拟器没法获取推送Token
  • 如果是上线生产环境,记得把pushOptions.ios.production改成true,同时用生产环境的推送证书

内容的提问来源于stack exchange,提问作者svvc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 00:53:14