Swift 集成 JPush SDK 3.0.6 失败

jpush
swift
ios
标签: #<Tag:0x00007fb83d287fb0> #<Tag:0x00007fb83d287e70> #<Tag:0x00007fb83d287d30>

(Louis Hors) #1

按照集成指南, 以及 GitHub 上的 swift 3.0 demo 集成了 JPush 的 SDK.
确认证书正确: 推送证书目前正常用于另一个 SDK 相关推送.
确认 bundle id 正确.
编译无错, 没有任何方法和宏来屏蔽 print 内容.
setDebugMode() 已调用
启动以后控制台却没有任何输出. 请问是怎么回事呢?


#2

你说的是哪一个demo?

推送证书配置请根据我们的说明文档
https://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/

调用初始化代码了吗
https://docs.jiguang.cn/jpush/client/iOS/ios_guide_new/#_6


(Louis Hors) #3

https://github.com/jpush/jchat-swift/tree/swift3.0 demo 链接
APP 还集成了融云, 证书是直接用的之前传到融云那边的推送证书, 在融云那边能正常使用, 莫非我还要再创建一对证书?
集成指南和 demo 的初始化代码都试过了.
真机: SE, 系统: 10.3.3 Xcode: 8.3


#4

1、这是JMessage即时通讯,不算JPush推送
2、建议用最新版本demo


3、你用的JMessage demo,难不成你看的却是JPush的集成指南?

https://docs.jiguang.cn/jmessage/client/jmessage_ios_guide/


(Louis Hors) #5

sorry, 看错了
在这个帖子里 Xcode8 Swift3.0 JPush
https://github.com/jpush/jpush-swift-demo/tree/swift3.0 这个链接下的 JPush demo


(HuminiOS) #6

master 分支已经更新到 swift 3.0 不需要在 切换到 swift3.0 分支。

我在 master 分支上测试没有问题。


(Louis Hors) #7

恩, 我参照的也是 master, 这是参照 demo 写的相关代码

        if #available(iOS 10, *) {
            let entity = JPUSHRegisterEntity()
            entity.types = NSInteger(UNAuthorizationOptions.alert.rawValue) |
                NSInteger(UNAuthorizationOptions.sound.rawValue) |
                NSInteger(UNAuthorizationOptions.badge.rawValue)
            JPUSHService.register(forRemoteNotificationConfig: entity, delegate: self)
        } else if #available(iOS 8, *) {
            // 可以自定义 categories
            JPUSHService.register(
                forRemoteNotificationTypes: UIUserNotificationType.badge.rawValue |
                    UIUserNotificationType.sound.rawValue |
                    UIUserNotificationType.alert.rawValue,
                categories: nil)
        } else {
            // ios 8 以前 categories 必须为nil
            JPUSHService.register(
                forRemoteNotificationTypes: UIRemoteNotificationType.badge.rawValue |
                    UIRemoteNotificationType.sound.rawValue |
                    UIRemoteNotificationType.alert.rawValue,
                categories: nil)
        }
        JPUSHService.setup(withOption: launchOptions, appKey: JPUSH_APPKEY, channel: nil, apsForProduction: false)
        JPUSHService.crashLogON()
        JPUSHService.setDebugMode()

确认控制台是能够输出正常打印信息的


(Louis Hors) #8

很无奈… 本来这种步骤不应该出现问题的, 但是是什么输出都没有, 没有任何头绪… 断点也能走这些代码…


(HuminiOS) #10

你的问题现在是什么, 怎么现在又有日志输出了。


(Louis Hors) #11

我指的控制台能正常输出是指能够正常输出打印数据
我的问题就是在这种情况下我按照 demo 写的代码就算打开了 debugMode也看不到任何极光的输出.


(HuminiOS) #12

这样吧, 把你的测试工程 发一份给我Q :380108184 我试试。

这边确实没出现你的情况


(HuminiOS) #13

这边确认,集成也没有问题,用法没有问题。

不过按照开发者的说法他的工程模拟器上有日志打印,真机上没有日志打印,猜测是和其他的库冲突。
用户在 iOS 9 的设备上没有问题, iOS 10+ 的设备就没有日志输出了。

用到的第三方库有:
涉及到推送的有一个融云,
然后客服的智齿.
一个埋点的 诸葛 io,
友盟分享,
Ping++支付,

建议 SDK 开发测试一下。


(Louis Hors) #14

补充: 友盟分享, 百度统计
在 delegate 里面进行初始化的 SDK 顺序:
诸葛 io, 融云, 百度统计, 友盟分享, 极光推送
同样涉及到推送的有: 融云, 智齿.


#15

确认几个问题:
1、iOS10以上的系统,在模拟器上有打印log吗
2、仅测试我们的SDK,不加其他的,是否还有问题?
3、排除下机型,换其他的设备试下
4、看看有没有可能做了日志屏蔽操作?


(Louis Hors) #16
  1. 模拟器为10.3的系统, 有 log
  2. 这个待测试, 等会测试一下
  3. SE(10.3.3, 10.3.1), 6s(10.1.1) 均不可. 6sp(9.3.2)有 log, 但是一直显示 ack timeout for request… connectiing with coreAddr, 4G 网络. 安卓正常.
  4. 开启了 debugMode, crashLogOn, 确认没有做日志屏蔽, 其他日志可正常打印.

(Louis Hors) #17

现在确认应该是和某个库有冲突吧, 新建了一个新项目, 只集成极光是没有问题的. 有日志输出, SE 10.10.3


#18

开发这边回应 :
估计是log打印的问题
要接入多个sdk,那可能避免不了这个问题

你在log不打印的情况下,JPush的功能使用是否正常?