Unity信鸽sdk的接入及常见问题

基本按照官方文档就可以完成安卓项目的开发,在开发过程中发现,同样的工程在安卓中发布可以收到推送,导出jar包在untiy中发布就收不到推送。

苦苦找不到问题所在,偶然发现将sdk中的2号文件导入unity可以正常使用,因为之前在参考一些帖子的时候,都是安卓的帖子,在安卓中已经继承了该jar包,导入此包会在安卓中造成一下问题,所以将其删掉了,但在unity中是没有该包,所以将该jar包一同导入unity中问题解决。

爬坑继续中...

目录

 [隐藏

信鸽的定义

  • 信鸽(XG Push)是一款专业的免费移动App推送平台,支持百亿级的通知/消息推送,秒级触达移动用户,现已全面支持Android和iOS两大主流平台。
  • 开发者可以方便地通过嵌入SDK,通过API调用或者Web端可视化操作,实现对特定用户推送,大幅提升用户活跃度,有效唤醒沉睡用户,并实时查看推送效果。

推送通知

  • 在信鸽产品中,通知定义为Android和iOS开发者指南中的Notification。服务器定向将信息实时送达手机,通过建立一条手机与服务器的连接链路,当有消息需要发送到手机时,通过此链路发送即可。
    通过推送一条用户可见的信息,引导用户进行有目的性的操作。通常用于产品信息知会、新闻推送和个性化消息等场景。

本地通知

  • 本地通知定义为Android开发者指南中的Local Notification。应用通过自定义的日期、时间和消息内容,无需通过服务器即可向用户推送一条可见的信息。通常用于应用的某些本地定时提醒场景,游戏应用中建筑物升级结束的提醒,以及一些有明确结束时间的场景等。
    更多请参考XGPushManager提供信鸽服务的对外API列表

消息命令

  • 在信鸽产品中,我们支持通过推送可执行代码指令,让应用在后台进行一系列操作行为,通过此功能,可以用最小成本实现对应用的远程操控,推送的消息命令内容由各个应用开发者自定义。 消息命令可以支持的场景非常广泛,可以任由开发人员扩展。例如给部分标签用户进行消息命令推送,让应用在WIFI情况下自动下载安装包并静默升级至最新快速增量更新应用,或让应用根据自身情况下载并静默增量更新,对于不需要更新的用户不造成干扰。

标签(tag)

  • 在信鸽产品中,标签通常是指给某个一群用户打上标签,例如在北京的喜爱美食的使用iOS的用户;超过30天未启动应用的沉睡用户;高消费潜力用户;团队测试用户等。
  • 一个应用最多有10000个 标签(tag), 每个token在一个应用下最多100个 标签(tag), 标签(tag)中不准包含空格。

别名(alias)/帐号(account)

  • 在信鸽产品中,别名/帐号通常是指给某特定用户推送消息。别名/帐号可以是终端在注册时上报的QQ号、openid、邮箱帐号、手机号等。
     
  • 如何解除一个设备的账号绑定?

解答:按绑定账号的调用方式,将账号绑定为*(英文星号)即可令设备不绑定任何账号。

使用过程中的热门问题

  • Q:信鸽收费吗?
  • A:信鸽(XG Push)是免费的。
  • Q:信鸽推送的pro版本有什么优势?
  • A:主要是针对精准定向推送。大部分用户使用基础版就能满足需求,Pro主要针对用户量大的app,进行分群定向推送,精细化运营,Pro版与基础版,到达率都是完全一样的。
  • Q:信鸽推送在推送数量/推送频率有什么限制?
  • A:推送数量无限制。推送频率上,仅全量广播限频为每3秒一次,其他推送行为不限频。
  • Q:对单个设备,保存多少条离线信息?保存时间是多少?
  • A:离线消息Android最多保存5条iOS最多保存1条;保存时间最多72小时
  • Q:信鸽推送在标签方面有什么限制?
  • A:单个设备最多设置100个标签,单个app全局最多可以有10000个不同的标签。
  • Q:信鸽推送与腾讯开放平台的APPID数据是否相通?
  • A:当你在开放平台注册应用并使用信鸽后,应用的信息会自动从开放平台同步至信鸽平台,单独使用信鸽时不用重新接入应用。但是,在信鸽接入的应用是不会同步至开放平台的。
  • Q:设备注册为什么失败?
  • A:新创建的app会有一分钟左右的数据同步过程,在此期间注册可能返回20错误码,稍后重试即可。其他情况返回20错误码,请检查access id和access key是否正确配置,常见错误是误用secret key或者access key头尾有空格。返回码非0非20请向我们报告(QQ群: 333782566 )
  • Q:当第一次注册成功后,没有反注册,以后使用还需要注册吗?
  • A:不需要,只要没反注册,就不需要再次注册
  • Q:应用关闭或结束进程后,还能收到推送消息吗?
  • A:一般情况下都能收到。推送服务会在应用关闭后,继续在后台运行并能够接收到消息。如果推送服务被结束,服务会自动重启并可以正常接收消息。
  • Q:设备注册为什么收不到回调信息?
  • A:注册操作中,后台只可能有三种出错行为:1、不响应;2、返回错误格式的数据包;3、返回错误码。这三种行为终端应该都可以检测到并给出回调。
  • Q:为什么我推送成功了,有了抵达量,点击量却等于0?
  • Android 2.30版本之前的用户:如果要统计通知的打开效果,需要嵌入代码。方法请参考Android SDK 2.7节,效果统计
  • Android 2.30版本之后的用户:无需任何调用
  • Q:为什么推送通知能接收到,推送消息却接收不到?
  • A:消息命令不会显示在通知栏的,不能通过这个判断是否接收到
  • Q:如果APP没有收到通知,可以检查以下情况是否正常:

1、设备是否正常联网?
2、accessId、accessKey设置是否与前台注册的一致?
3、当前APP包名是否与前台注册的一致?如果不一致,请在前台选中“使用多包名”选项。
4、设备是否注册成功?
5、前台下发通知时,“时段控制”选项里的时间段是否符合终端设备当前时间?
6、检查其它可能存在的问题。
7、请检查xml的receiver和service标签是否匹配,请直接复制demo的例子再修改。
8、请详细阅读“常见问题与解答”,看看是否有解决方案。
9、请检查是否没有加“android.permission.GET_TASKS”权限的问题

  • 如果还不能排查问题,请加入信鸽开发者技术QQ群:333782566 会有专门的人员协助。
     
  • Q:为什么会出现消息延时?
  • A:延时通常因为终端网络不通畅,或者终端上信鸽service被系统或者安全软件杀死。
  • Q:为什么会出现推送通知时,只有声音却没有文字信息的情况?
  • A:该问题与系统有很大关系,需要拿设备的logcat来进行特定分析。因此请加入qq群333782566并联系管理员。
  • Q:如何绑定账号(别名)?
  • A:账号,又称别名,指带有账号登陆功能的APP的用户账号,这里不仅仅是QQ或微信,只要是用户的账号都支持,比如手机QQ的账号就是QQ号码,gmail的账号就是邮箱,中国移动的账号就是手机号码。
  • Android绑定账号在注册时绑定,即:registerPush(context,account)接口,ios通过setAccount设置。
  • 绑定账号后,可以通过指定别名(账号),下发通知,通常情况下,这个账号最近登陆过的设备都可以收到通知。因此,建议用户退出账号时,调用unregister接口取消注册。
  • 账号(别名)不允许单字符,一个token只能绑定一个账号,多次绑定时,以最后一次为准。
  • Q:一个别名或账号最多可以绑定多少设备?
  • A:一个别名或账号下面最多可以绑定10台设备,当绑定满后,再绑定时会给出错误代码
  • Q:token与账号的区别?
  • A:token是一台设备的标识,账号是一个用户的标识。对于单个APP,一个用户可能在多台设备登陆,一个账号对应多个token;而一个token只能绑定一个账号,多次绑定时,以最后一次为准。
  一个设备只有一个别名 = 一个token一个账号;一个别名多个设备 = 一个账号多个token

  • Q:账号在设备A上登陆过,又在设备B上登陆?给这个账号发信息会怎么样?
  • A:只要是没有注销,则两台设备都会收到
  • Q:标签与账号的区别?
  • A:标签是用于标识一个token或用户的一些属性,如广东省、男性、游戏玩家等。别名是用户的账号,请勿用标签作为别名使用。
  • Q:在应用列表中看到“覆盖设备数”,具体指的是什么?
  • A:是指该应用下处于注册状态的设备数/终端数,同时也是该应用在推送时可以覆盖到的最大设备数。终端若调用了unregister的接口,覆盖设备数会减少。
  • Q:为什么在web端推送出现服务器繁忙?
  • A: 多发于iOS推送。请先检查token以及所选推送环境是否正确,然后检查证书是否正确提交,若还出现相同错误可重新制作一份不带密码的证书提交再试。
  • Q:推送过程中,非定时推送(立即推送)能否撤销?
  • A:不能,只有定时推送才可以做撤销操作。
  • Q:推送后查看推送列表,已经推送完成了,状态却显示推送中,怎么办?
  • A:请刷新页面后重新查看。
  • Q:在推送时,如何向单个用户推送消息?
  • A:请参考开发手册,有关于“推送消息给单个设备”和“推送消息给单个账户或别名”的使用指南。
  • Q:给账号或别名推送时,提示token not found, check registration 是怎么回事?
  • A:说明账号没和token关联上,这种情况有两种可能:
  • 1.账号或别名注销了,不一定是app调用,某些情况下可能会自动触发注销的
  • 2.该设备注册了别的账号或别名,这样会自动与原来的解绑。(一个设备只能对应一个别名如果当前别名下没有设备了,就not found了)
  • Q:用户重连上线后收到多条push的顺序是怎样?
  • A:下发消息的顺序是按照消息ID递增,客户端也是按照此规则收取消息,因此,收消息的顺序就是发消息的顺序。
  • Q:我现在有安卓的用户和ios的用户,那我php后台要写两个不同的接口分别推给安卓用户和ios用户吗?
  • A:需要调用两次推送接口 也可以把两个封装为一个。
  • Q:如果定时push选择的是过去的时间,是不是不会push出去?
  • A:不是,选择过去的时间系统则会立刻发送。

推送注意事项

  • 请在推送前确认设备已连接,且网络已连接。
  • 请在推送前确认应用包名已填写。
  • 请在推送前确认Access ID/Access Key/Serect Key与所要推送的应用相符。
  • 建议在推送前利用测试设备、测试预览进行推送测试。

Android常见问题

1、出现下列情况是什么意思?

android.app.IntentReceiverLeaked: Activity com.xxxx has leaked IntentReceiver com.tencent.android.tpush.f@422a4dc8 that was originally registered here. Are you missing a call to unregisterReceiver()?

原因:acitvity在信鸽注册返回前就finish了,导致信鸽注册的receiver没有被取消
处理方法:resisterPush传递的context改为context.getApplicationContext()

2、如何删除注册成功的Toast提示?
原因:demo里面的CustomPushReceiver自带Toast提示
处理方法:删除CustomPushReceiver里面的Toast相关内容

3、ibs目录下有很多平台的.so文件,如armabi、x86
原因:信鸽针对android所有的平台开发了.so库
处理方法:可以将不需要的平台目录删除掉,如游戏一般只有armabi,可以删除其它目录。

4、指定打开某个activity页面,但经常不能正常跳转
原因:在部分手机,通知栏跳转到某个页面可能会出现权限问题
处理方法:在androidManifest.xml中,需要打开的activity加上android:exported="true"。

5、APP进程被安全软件(如腾讯手机管家/360)杀死,信鸽service是否会再次启动?
解答:这个由系统、安全软件和用户操作限定是否能够再次启动。
1、信鸽SDK通过唯一的service与信鸽后台保持通讯,在android中,service被杀死后在没有被系统/安全软件禁止的条件下是能够自启动的,具体可自行网上搜索“android service onstartcommand START_STICKY”
2、目前,在某些定制的系统(如MIUI)或被安全软件禁止自启动后,只有用户再次打开APP才能重启信鸽service
3、信鸽service何时能够启动由系统调度确定
4、在锁屏触屏、网络切换、安装APP、系统重启等条件,信鸽会主动尝试启动service

6、没有sd卡就不能用信鸽了么?
解答:不会,只是日志写的地方不同。

7、注册方法能不能放到线程里创建,能不能在APPLICATON onCreate里就创建?
解答:注册方法可以在任何地方调用,但注意要传递applicationContext 。

iOS常见问题

  • 信鸽只能保证将消息转交APNS,因此若APNS出错会产生一定得推送时间误差。
     
  • APNS只为离线终端保存一条消息,所以离线终端上线后仅能收到离线期间最新的一条消息。
     
  • 受APNS和iOS的限制,效果统计功能可能会有一定得统计误差。
     
  • 如果出现以下错误:

7-)3E2YYERDGW1NSW16X5V5.jpg
请在自己的项目里这样设置:
N-RH-FDY$DH8O9VT-(((-%J.jpg

 

  • iOS为什么没有抵达数据?

由于苹果系统的问题,信鸽无法统计到消息推送之后的抵达动作。但是,若用户对消息进行了点击,信鸽可以统计其点击动作并且上报。
 

  • 为什么无法上传iOS证书?

请核对证书格式是否正确。
 

  • 为什么证书验证失败?

请仔细参考iOS证书设置指南进行证书制作。
 

  • 点击推送时,提示:failed to load certificate,check your APNS certificate

1. 对应环境的apns证书没提交
2.证书做得不对,请参照官方指南进行制作
3.推送环境是否选择正确,测试预览请选择开发环境

 

  • 开发证书和生产证书有什么区别?

开发证书用于开发推送服务时使用,设备获取到的deviceToken是苹果下发的开发环境的deviceToken。
生产证书用于正式的提送,苹果下发的是生产环境的deviceToken。AppStore审核通过后,可以给所有安装App的设备进行推送。

 

  • 信鸽能支持 ios7 特性字段吗, 这个content-available=1 是苹果官方静默推送字段,在信鸽API里面好用吗?

后台可以转发这个字段,需要终端实测效果。
 

  • 为什么我的项目接入信鸽在iphone5s上不能通过编译?

XCode进行以下设置即可,把相应Target的Valid Architectures里的arm64删除。
IOS 通过编译.jpg

  • iOS SDK在注册xgpush时,出现下列情况是什么意思?
[xgpush seccess]rspCode is 0
[xgpush]Disconnected.

解答:第一个是指成功,第二个是指收到服务器返回或者超时,就会断开和服务器的连接。
 

  • 重新注册同一个别名收到推送消息?

解答:setAccount之后要重新registerDevice一次,详细见注册设备 

关于接入应用

  • Q:接入应用时,提示“超时,请刷新重试”,是什么原因?
  • A:出于安全考虑,接入应用时会有10-15分钟的填写时间限制,超过这个时限后,请刷新页面重新创建。
  • Q:接入应用时,如果选错了应用分类,能否更改?
  • A:不能,请重新接入应用并正确选择分类。
  • Q:接入应用时,能否同时创建Android和iOS两个平台?
  • A:可以,同时勾选两个平台后即可同时接入。接入后的应用是分平台的两个独立应用。
     
  • Q:如何快速体验信鸽Android推送?
  • 1.下载应用列表内的demo app,点击注册,然后在前台创建推送。
  • 2.使用eclipse导入下载SDK包里面的demo工程,修改AndroidManifest.xml里面的accessId和AccessKey为自己APP的对应值,然后在前台下发消息,下发时,请选中“支持多包名”选项。
     

关于应用配置

  • Q:创建的应用,应用名称能否更改?
  • A:可以更改,且更改后不会影响正常推送。
  • Q:创建的应用,应用包名能否更改?
  • A:出于安全考虑,应用包名填写后无法更改。
  • Q:应用管理员如何添加和删除?
  • A:一个管理员对应一个QQ号码,可以在应用配置页进行添加和删除。
  • Q:Access ID是什么?
  • A:识别一个应用的唯一标识,不能更改;需要配置到客户端SDK中,调用后台接口时也需要提供。
  • Q:Access Key是什么?
  • A:客户端鉴权密钥,与Access ID共同验证以确定调用合法。需要配置到客户端SDK中,无法更换。
  • Q:Secret Key是什么?
  • A:后台接口鉴权密钥,与Access ID共同验证以确定调用合法,调用rest api或者使用后台sdk时需要用到。Secret Key泄露可能导致不法分子冒充身份调用API,建议不要直接在客户端调用API以免SECRET KEY被获取。因此,若Secret Key已泄露,强烈建议更换。

关于Demo App

  • Q:Demo App如何下载?
  • A:这里有两种方式可供选择,包括“本地下载”和“二维码扫描”,本地会直接下载进电脑内,然后请自行连接手机安装;二维码扫描会直接下载至手机中,请下载后安装使用。
  • Q:Demo App安装了,推送出消息却无法收到?
  • A:Demo安装后,请等待Demo首页显示您的设备token码,并且刷新电脑端网页;待应用列表内Demo app后的覆盖设备数由0变为1后,即表示设备已注册,可以正常接收消息。
  • Q:我给Demo App推送消息,别人会收到吗?
  • A:每一个QQ号都有对应的Demo App,因此别人不会收到您推送出的消息,同样您也不会收到别人的消息。
  • Q:想利用Demo App测试一下单条消息的群发状态,可以吗?
  • A:每一个QQ号都有对应的Demo App,如果您将Demo的安装包或二维码自愿提供给除您自己以外的人,您在网页端测试推送消息时,凡安装过该demo的设备都会收到该消息。

关于单应用多包名推送

  • Q:我的应用有多个包名,如何进行应用的多包名推送?
  • A:目前市场上部分app针对不同渠道有不同的包名,同一款app可能会有上百个包名,这时就可以利用access id向该app的所有包名进行推送。在多包名推送模式下,设备上所有使用这个access id注册推送的app都会收到这条消息。
单应用多包名推送分为简单的三个步骤:

1)在信鸽前台注册应用,无需填写包名;若已经填好包名,也不会影响推送效果;

2)集成最新SDK在应用内;

3)在进行推送前,将推送参数 multi_pkg 设置为1;

若使用Rest API推送,详情参考Rest API使用说明 1.5节
若使用服务端SDK推送,请将Message对象的multiPkg属性设为1,详情参考Python sdk文档 2.5节

猜你喜欢

转载自blog.csdn.net/Happy_zailing/article/details/81563059
今日推荐