Skip to content

Commit 7432946

Browse files
Merge pull request #544 from jpush/dev
Dev
2 parents b3688ae + dcd5d83 commit 7432946

File tree

6 files changed

+77
-1
lines changed

6 files changed

+77
-1
lines changed

documents/api.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
* [getLaunchAppNotification](#getlaunchappnotification)
2525
* [点击推送启动应用事件](#open-notification-launch-app-event)
2626
* [网络成功登陆事件](#network-did-login-event)
27+
* [hasPermission](#haspermission)
2728
* [Android Only API](#android-only-api)
2829
* [crashLogOFF](#crashlogoff)
2930
* [crashLogON](#crashlogno)
@@ -336,6 +337,16 @@ JPushModule.getLaunchAppNotification( notification => {
336337
})
337338
```
338339

340+
#### hasPermission
341+
342+
获取应用是否有推送权限。
343+
344+
```
345+
JPushModule.hasPermission( res => {
346+
// res = boolen
347+
})
348+
```
349+
339350
#### 点击推送启动应用事件
340351

341352
**NOTE**: iOS 需要安装到 [email protected]+ 。

example/App.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ export default class App extends Component {
6767
console.log('Stop push press')
6868
}
6969

70+
onHasPermission () {
71+
JPushModule.hasPermission( res => console.log(`onHasPermission ${res}`) )
72+
}
73+
7074
onResumePress () {
7175
JPushModule.resumePush()
7276
console.log('Resume push press')
@@ -286,6 +290,14 @@ export default class App extends Component {
286290
>
287291
<Text style={styles.btnTextStyle}>STOPPUSH</Text>
288292
</TouchableHighlight>
293+
<TouchableHighlight
294+
underlayColor='#e4083f'
295+
activeOpacity={0.5}
296+
style={styles.btnStyle}
297+
onPress={this.onHasPermission}
298+
>
299+
<Text style={styles.btnTextStyle}>HasPermission</Text>
300+
</TouchableHighlight>
289301
<TouchableHighlight
290302
underlayColor='#f5a402'
291303
activeOpacity={0.5}

index.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ declare class JPush {
6060
*/
6161
static getConnectionState(cb: JResultCallback<boolean>): void
6262

63+
/**
64+
* iOS Only
65+
* 获取应用是否有推送权限
66+
*/
67+
static hasPermission(cb: JResultCallback<boolean>): void
6368
/**
6469
* 重新设置 Tag
6570
*/

index.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,22 @@ export default class JPush {
3535
JPushModule.stopPush()
3636
}
3737

38+
39+
40+
/**
41+
* iOS Only
42+
* 判断是否成功授权推送(或是否在设置中成功开启推送功能)
43+
*
44+
* @param {Function} cb
45+
*/
46+
static hasPermission (cb) {
47+
if (Platform.OS == "ios") {
48+
JPushModule.hasPermission(res => {
49+
cb(res)
50+
})
51+
}
52+
}
53+
3854
/**
3955
* 恢复推送功能,停止推送后,可调用该方法重新获得推送能力
4056
*/

ios/RCTJPushModule/RCTJPushModule.m

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,38 @@ - (void)setBridge:(RCTBridge *)bridge {
149149
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
150150
}
151151

152+
RCT_EXPORT_METHOD(hasPermission:(RCTResponseSenderBlock)callback) {
153+
float systemVersion = [[UIDevice currentDevice].systemVersion floatValue];
154+
155+
156+
if (systemVersion >= 8.0) {
157+
UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];
158+
UIUserNotificationType type = settings.types;
159+
if (type == UIUserNotificationTypeNone) {
160+
callback(@[@(NO)]);
161+
} else {
162+
callback(@[@(YES)]);
163+
}
164+
165+
} else if (systemVersion >= 10.0) {
166+
[[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
167+
168+
switch (settings.authorizationStatus)
169+
{
170+
case UNAuthorizationStatusDenied:
171+
case UNAuthorizationStatusNotDetermined:
172+
callback(@[@(NO)]);
173+
break;
174+
case UNAuthorizationStatusAuthorized:
175+
callback(@[@(YES)]);
176+
break;
177+
}
178+
}];
179+
}
180+
181+
182+
}
183+
152184
RCT_EXPORT_METHOD(getLaunchAppNotification:(RCTResponseSenderBlock)callback) {
153185
NSDictionary *notification;
154186
if ([RCTJPushActionQueue sharedInstance].openedRemoteNotification != nil) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "jpush-react-native",
3-
"version": "2.2.10",
3+
"version": "2.2.11",
44
"description": "a jpush plugin for react native application",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)