Skip to content
This repository has been archived by the owner on Apr 11, 2023. It is now read-only.

升级到 0.6后, ios 不调用 register 方法 #17

Closed
stevenxyj opened this issue May 21, 2018 · 17 comments
Closed

升级到 0.6后, ios 不调用 register 方法 #17

stevenxyj opened this issue May 21, 2018 · 17 comments
Labels

Comments

@stevenxyj
Copy link

stevenxyj commented May 21, 2018

原来用 react-native-xinge-push 0.3 版本上,android, ios 推送都正常。
升级到 0.6 版 , android 版本推送正常, ios 上连 register 都不调用
0.6 版时,信鸽iOS SDK 升级到 v3.1.0,同时按说明的方法修改了 AppDelegate.m 中代码。

_initPush() {
	let accessId;
	let accessKey;
	
	if (IS_ANDROID) {
		accessId = 00000000;
		accessKey = 'xxxxxxxxxx';
	} 
	else {
		accessId = 0000000000;
		accessKey = 'xxxxxxxxx';
	}

	XGPush.enableDebug(true);
	XGPush.init(accessId, accessKey);

	XGPush.register('userid');
}
_onRegister(deviceToken) {
	Alert.alert('_onRegister', 'deviceToken: ' + deviceToken);
}

componentDidMount() {
	XGPush.addEventListener('register', this._onRegister);
	XGPush.addEventListener('notification', this._onNotification);
	if (IS_ANDROID) {
		XGPush.addEventListener('message', this._onMessage);
	}
    }

请问一下是会是什么原因?

调试下来好像 react-native-xinge-push-0.6\ios\XGPush\XGPushManager.m 中的 + (void)didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 方法没有被调用。

但是 AppDelegate.m 中增加的 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 方法可以被用

@charmtiger
Copy link

我也是有此问题

@charmtiger
Copy link

charmtiger commented May 22, 2018

image
升级到0.6之后 android 调用 register 便会报错
代码如下

XGPush.register('mengti').then(result => {
      // do something
      // 或者在 onRegister 里处理,效果一样
    }).catch(err => {
    });

@stevenxyj
Copy link
Author

stevenxyj commented May 22, 2018

charmtiger : android 下 register 报错

~\node_modules\react-native-xinge-push\android\src\main\java\com\jeepeng\react\xgpush\PushModule.java
中的 registerPush 方法要修改,改成如下就可以

@ReactMethod
public void registerPush(String account, final Promise promise) {
    XGPushManager.registerPush(this.reactContext, account, new XGIOperateCallback() {

@charmtiger
Copy link

@stevenxyj 多谢,这样是可以的

@musicode
Copy link

@Jeepeng 作者快来改 bug 哦

@charmtiger
Copy link

ios 调用 register 没有反应, 版本0.6

XGPush.register('mengti').then(result => {
      // do something
      // 或者在 onRegister 里处理,效果一样
      alert('register resolve')
    }).catch(err => {
      alert('register reject')
    });

@Jeepeng Jeepeng added the bug label May 23, 2018
@musicode
Copy link

在这请教大家一个问题,如果手机收到多条通知,点击其中一条,怎样让其他通知一起消失呢

@musicode
Copy link

@Jeepeng 最近会改这个 bug 么?

@charmtiger
Copy link

@musicode 信鸽貌似没有提供这个api,极光倒是有 clearAllNotifications

@musicode
Copy link

难道用了信鸽,就没法实现这个功能么,这有点坑啊

@Jeepeng
Copy link
Owner

Jeepeng commented May 28, 2018

@stevenxyj 关于register不调用问题,升级后漏写了,需要在AppDelegate.m添加以下代码

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [XGPushManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

@musicode
Copy link

@Jeepeng 还有上面提到的 registerPush 少写一个参数的问题

此外,是否能增加一个清空所有通知的接口呢?使用场景是,如果用户收到很多通知,点击一条进 app,可以调用该接口清空所有通知。

@Jeepeng
Copy link
Owner

Jeepeng commented May 28, 2018

@charmtiger @musicode 关于 registerPush 报错问题,是因为最新的SDK 将这个方法拆分开了:

// 启动并注册APP,同时绑定账号,推荐有帐号体系的APP使用(3.2.2不包括3.2.2之前的版本使用,有注册回调
void registerPush(Context context, String account, XGIOperateCallback callback )
// 启动并注册APP,同时绑定账号,推荐有帐号体系的APP使用(3.2.2以及3.2.2之后的版本使用,此接口会覆盖设备之前绑定过的账号,仅当前注册的账号生效)
void bindAccount(Context context, String account, XGIOperateCallback callback)

java 改了,我 js 这边忘记改了,目前已经修复

@charmtiger
Copy link

@Jeepeng 别忘了发布一下哈,另外 ios 注册无反应也是这个原因吗?

@Jeepeng
Copy link
Owner

Jeepeng commented May 28, 2018

@charmtiger 注册无反应问题前面的回复有提到,我再把其他 bug 修修,今天晚上发布

@charmtiger
Copy link

@Jeepeng 谢谢!辛苦了!

@Jeepeng Jeepeng closed this as completed May 30, 2018
@musicode
Copy link

因为之前在这个 issue 问了一次关于清空通知的问题,最近我问信鸽客服,得到一下答复:

不好意思,重新更新一下,源代码是有设置了的,我们目前支持清除所有信鸽通知:public static void clearLocalNotifications(Context context) 

@Jeepeng 有空是否可以加上这个接口的支持呢

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

4 participants