获取clientid和厂商deviceToken相关问题

获取clientid和厂商deviceToken相关问题

一、android

1、安卓的clientid和devicetoken怎么获取

  • CID需要由客户端获取并自行记录,安卓获取方式如下,初始化个推SDK后在自定义IntentService 服务中获取。
public void onReceiveClientId(Context context, String clientid) {
      Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);}
  • devicetoken安卓获取方式如下,集成配置完厂商应用信息和sdk,个推侧sdk会注册厂商推送服务,获取到厂商推送服务注册id,即devicetoken。并且个推侧客户端sdk会处理好cid和devicetoken的绑定关系。

厂商应用开通指南:https://docs.getui.com/getui/mobile/vendor/vendor_open/
厂商sdk集成指南:https://docs.getui.com/getui/mobile/vendor/androidstudio/

确认CID是否绑定devicetoken

在【消息推送】-【配置管理】-【故障排查】-【 检测CID的状态及信息:】中输入CID查询,看是否会返回devicetoken。

img

2、安卓获取不到ClientID

  • 检查手机连接的网络是否正常,尝试切换网络。

  • 检查手机相关LOG日志开关是否打开,打包是否有屏蔽日志输出。

  • 检查pushservice进程有没有起来,即初始化个推是否正常。

  • 没有自定义pushservice【一加手机、魅族设备居多】;

  • 根据客户端集成文档依次检查集成配置等步骤,并开启debug模式进行排查。

  • IntentService类的onReceiveClientId方法里面获取回调的clientId,getClientid接口是获取缓存里面的clientId,首次启动可能会获取不到;

  • 查看PushManager 方法 setDebugLogger 回调集成日志是否正常。

    在 Application 的 onCreate 中添加以下代码:

    com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
      @Override
      public void log(String s) {
          Log.i("PUSH_LOG",s);
      }
    });
    

3、Android获取不到厂商devicetoken

  • 手机连接电脑,手机需开启开发者调试模式,打开APP,在androidstudio编译器logcat中过滤"Assist_",若成功打印token信息则表示厂商集成正常;

image.png

  • 若未返回任何带有厂商标识的日志,说明厂商推送服务还未置于您App应用内,请重新检查客户端厂商集成相关步骤;

  • 若返回了厂商标识日志,则注意查看返回的厂商Code码,如下示例:

    厂商通道 返回码 含义 解决建议 官方地址
    华为 1001 请确认手机中安装有应用 “华为移动服务” 或 “HMS-Core” 前往华为应用商店下载安装应用 “HMS-Core” 华为地址
    6003 应用 APK 未打签名或与华为开放平台登记签名信息不一致 为 APK 文件打上签名或检查签名信息是否一致
    907135000 appId 不合法 华为平台上推送状态未打开
    907135702 签名文件的 SHA256 值与在华为推送平台上配置的不一致 前往华为推送平台检查填写的签名文件 SHA256 值是否配置一致
    小米 22006 应用程序 ID 不合法 前往小米推送平台检查应用的包名、appId、appKey 是否匹配 小米地址
    22007 应用程序 Key 不合法 前往小米推送平台检查应用的包名、appId、appKey 是否匹配
    22022 应用程序 package name 不合法 前往小米推送平台检查应用的包名、appId、appKey 是否匹配
    魅族 110000 appId 不合法 前往魅族推送平台检查应用的包名、appId、appKey 是否匹配,确认 Flyme 推送平台 的应用信息 魅族地址
    110001 appKey 不合法 前往魅族推送平台检查应用的包名、appId、appKey 是否匹配
    OPPO 14 无效的 AppKey 参数 客户端需要的是OPPO 的 AppKey和APPSECRET OP地址
    15 缺少 AppKey 参数 补充 AppKey 参数
    16 无效的 AppKey 参数 客户端需要的是OPPO 的 AppKey和APPSECRET,检查配置是否正确
    VIVO 10003 App 包名与配置不匹配 前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配 VV地址
    10004 appkey 不匹配 前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配
    10005 appid传入错误 前往 vivo 推送平台检查应用的包名、appId、appKey 是否匹配

二、ios

1、iOS的ClientID,deviceToken如何获取?

  • 在Xcode的origanizer->device选择你的设置,然后在console.app(控制台.app)里查看日志,会输出如下:client:a38dbe81c7bbfb93824*****2d5fec4f;或者在客户端CID回调中获取如下:

    /// [ GTSDK回调 ] SDK启动成功返回cid
    - (void)GeTuiSdkDidRegisterClient:(NSString *)clientId {
     NSLog(@"[ TestDemo ] [GTSdk RegisterClient]:%@", clientId);
    }
    复制
    
  • sdk>=2.5.2.0版本,是需要使用个推注册远程通知权限,个推内部自动获取devicetoken并上报,开发者若想拿到devicetoken仍可以通过苹果原生回调api去获得。

    - (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    复制
    
  • 需要注意的是devicetoken从苹果那边获取到后是有空格区分的,需要把空格去掉。

  • 苹果上报token规则:
    需要下载应用后,首次打开应用通知权限才会上报devicetoken,后续每隔12小时会重新上报1次;
    如果首次关闭应用通知权限则不会上报devicetoken。"

2、iOS获取不到clientId

  • 检查手机连接的网络是否正常,尝试切换网络;

  • 根据客户端集成文档依次检查集成配置等步骤;

  • 使用个推SDK Demo测试,如果能正常获取,可以对照看下。

3、iOS获取不到devicetoken

  • 证书问题(检查证书的是否有效);
  • 设置中没有打开通知开关(在配置里查看,是否允许通知);
  • 没有支持注册远程通知权限,可使用个推SDK Demo测试,如果能正常获取,可以对照看下。
  • 用真机测试,不能使用xcode模拟器测试。
  • 切换4G网络测试;
  • 重启手机;
  • 打正式包测试。

三、关于cid和devicetoken的其他问题

1、cid和devicetoken的关系

  • cid和devicetoken都没变的情况下,每天打开app初始化gtsdk时会重新绑定;
  • cid或者devicetoken有变化,只要打开app初始化gtsdk就会重新绑定;

2、CID什么情况下会变

安卓:

  • appid参数替换,应用的包名修改;
  • 用户超过三个月未登录,CID会置为无效CID,若再次登录会重新生成一个CID;
  • 如果应用没有获取sd卡权限,卸载重装/清除缓存,CID会变(CID信息会写入sd卡)。

ios:

  • 个推Appid参数、应用的包名、苹果Bundleid的修改。

  • 苹果手机则是进行了越狱或系统还原。

  • 用户cid超过一年未联网,cid会置为无效cid,重新联网会生成一个新的cid;

注意:系统升级,应用覆盖安装,CID不会变。

3、devicetoken什么情况下会变化

安卓:

  • 华为:清除应用数据(例如卸载应用并重新安装、设备恢复出厂设置等)后重新打开应用。链接

  • 小米:如果SDK没有从本地读取到缓存的regID,应用卸载重装或者清除应用本地数据,regID就会变化;小米推送sdk会向服务端重新请求,此时regID会重新生成。链接

  • oppo: 1)应用卸载后出现安装 ;2)恢复出厂设置 ;3)系统双清 。链接

  • vivo: 手机14天不联网或应用卸载会触发解订阅与设备解除订阅关系,regId失效。解订阅再重新订阅会重新启用这个regId,异常情况下会生成新的regId。链接

  • 魅族:手机卸载了 App 或者 App 不活跃一个月。 链接

ios:

  • 应用卸载重装;

  • bundle id改变;

  • 手机越狱或系统还原;

  • debug和relelse环境切换;

注意:应用覆盖安装,devicetoken不会变。

4、devicetoken什么情况下会失效

安卓:

  • 华为:设备超过30天没有联网,会定义为沉默设备,沉默设备无法接收推送消息。跟应用是否活跃没有关系。 链接

  • 小米:

1)app卸载重装或者清除数据后重新注册,这种情况下会生成一个新的regID,而老的regID会失效;

2)在MIUI上,app卸载时,如果能成功上报,则regID会被判定失效;

3)设备超过3个月没有和小米push服务器建立长连接;

链接

  • oppo: 在用户设备刷机、卸载应用、或设备长时间(超过30天)无连接时失效。 链接

  • vivo: 超过14天都没有和vivo服务器建立过长连接,则会判定ID失效;应用卸载或者关闭了通知,90天不联网 regid也会无效。链接

  • 魅族:手机卸载了 App 或者 App 不活跃一个月。 链接

ios:

  • 系统注销或者是应用被卸载

  • 用户在新的设备上安装app

  • 用户从backup中恢复设备

  • iOS大版本升级

  • 关闭打开推送

5、iOS推送证书切换后生效时间

  • 如果是同环境证书切换(开发环境证书换开发环境),证书更换后1分钟左右生效 ;
  • 不同环境证书切换,正常也是3分钟左右生效;
  • 如果切换后拿devicetoken测试返回可用,但是通过个推推送收不到消息,可以将应用卸载重装一下,这样cid和devicetoken会重新绑定;
开发者中心 SDK 下载

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询