我用的极光IM小程序SDK,使用到UNI框架中开发APP,发现每隔几分钟总是掉线

标签: #<Tag:0x00007f6579a1a140>
// 异常断线监听
export function OnDisconnectJIM() {
	Vue.prototype.$JIM.onDisconnect(function() {
		console.log('<----极光IM断线监听---->')
		uni.showToast({
			title:'检测到极光IM断线',
			icon: 'none'
		})
		ReInitJIM()
	})
}

function ReInitJIM(){
	uni.showToast({
		title:'尝试重新连接极光IM...',
		icon: 'none'
	})
	InitJIM().then(() => {
		console.log('<----断线后再次初始化成功---->')
		uni.showToast({
			title:'重新连接极光IM成功',
			icon: 'none'
		})
		ReLoginJIM()
	}).catch(() => {
		console.log('<----断线后再次初始化失败---->')
		uni.showToast({
			title:'重新连接极光IM失败',
			icon: 'none'
		})
		ReInitJIM()
	})
}

function ReLoginJIM(){
	uni.showToast({
		title:'尝试重新登陆极光IM...',
		icon: 'none'
	})
	var userInfo = uni.getStorageSync('USERS_INFO')
	if(userInfo){
		var account = JSON.parse(userInfo)
		LoginJIM(account.userid).then(function() {
			console.log('<----断线后再次登陆成功---->')
			uni.showToast({
				title:'重新登陆极光IM成功',
				icon: 'none'
			})
		}).catch(() => {
			console.log('<----断线后再次登陆失败---->')
			uni.showToast({
				title:'重新登陆极光IM失败',
				icon: 'none'
			})
			ReLoginJIM()
		})
	}
}

小程序 使用建议:

  • 下面几点 SDK 使用建议可以尽量保证长连接的正常交互:
    1.在第一次登录或注册的时候,再去实例化对象 JMessage 进行初始化。
    2.JMessage 实例化后最好挂载在 app 对象,并保证全局只实例化一次。
    3.当小程序在前台(app onshow)时,监听收到 disconnect 事件后重新进行初始化和登录
    4.当小程序在后台(app onhide)时,在下次小程序调到前台时判断连接状态,如果是断开状态重新进行初始化和登录。

请问如何在uni-app框架中把极光IM挂载到app对象上呀?我目前是挂载到VUE上面:
Vue.prototype.$JIM = new JMessage({
debug: false
})

//挂载到app上
getApp().globalData.$JIM = new JMessage({
	debug: false
})

请问这样写对吗?

这样应该是可以的,你使用是否还存在问题