EXPO sdk39 中的应用通知设置访问
Posted
技术标签:
【中文标题】EXPO sdk39 中的应用通知设置访问【英文标题】:App notification setting access in EXPO sdk39 【发布时间】:2020-11-03 06:58:27 【问题描述】:当我意识到 Permissions.askAsync 没有按预期工作时,问题就开始了。
我找到了Permissions.askAsync not working as expected,这对于 ios 来说是很酷的解决方案,但我需要它来用于 android!所以,我为此添加了一些额外的代码:
Alert.alert(
'No Notification Permission',
'please go to settings and enable notifications permissions manually',
[
text: 'cancel', onPress: () => console.log('cancel') ,
text: 'Allow',
onPress: async () =>
if (Platform.OS === 'android')
await IntentLauncher.startActivityAsync(
IntentLauncher.ACTION_APP_NOTIFICATION_SETTINGS,
data: `package:$Application.applicationId`,
);
if (Platform.OS === 'ios')
Linking.openURL('app-settings:');
,
,
],
cancelable: false ,
);
UPD。下面的构造效果很好,但我想直接访问 APP_NOTIFICATION_SETTINGS。
onPress=() =>
IntentLauncher.startActivityAsync(
IntentLauncher.ACTION_APPLICATION_DETAILS_SETTINGS,
data: `package:$Application.applicationId`,
);
expo论坛中的相关问题https://forums.expo.io/t/opening-device-settings-on-android-using-linking/2059/14
我尝试访问 APP_NOTIFICATION_SETTINGS,但由于某种原因,我收到类似 “在已安装应用列表中找不到该应用”的错误。它在已发布的项目和独立(apk)上并得到相同的结果。有谁知道是什么问题?
【问题讨论】:
【参考方案1】:我意识到这有点晚了,但建议的答案对我不起作用。这是在我使用 Android 版本 29 的设备上运行的:
const pkg = Constants.manifest.releaseChannel
? Constants.manifest.android.package
: 'host.exp.exponent';
IntentLauncher.startActivityAsync(
IntentLauncher.ACTION_APP_NOTIFICATION_SETTINGS,
extra: 'android.provider.extra.APP_PACKAGE': pkg
,
);
TL;DR:这里的键更改是 android.provider.extra.APP_PACKAGE
作为 extra
键名。
【讨论】:
【参考方案2】:解决方案:
const pkg = Constants.manifest.releaseChannel
? Constants.manifest.android.package // When published, considered as using standalone build
: 'host.exp.exponent'; // In expo client mode
onPress: () =>
if (Platform.OS === 'android')
if (Platform.Version >= 26)
IntentLauncher.startActivityAsync(
IntentLauncher.ACTION_APP_NOTIFICATION_SETTINGS,
data: `package:$pkg`,
,
);
else
IntentLauncher.startActivityAsync(
IntentLauncher.ACTION_APPLICATION_DETAILS_SETTINGS,
data: `package:$pkg`,
,
);
if (Platform.OS === 'ios')
Linking.openURL('app-settings:');
,
解决方案说明:https://forums.expo.io/t/api-to-open-app-settings/5290/18
【讨论】:
以上是关于EXPO sdk39 中的应用通知设置访问的主要内容,如果未能解决你的问题,请参考以下文章
通过 FCM 在独立的 expo android build 上推送通知不会触发 addNotificationResponseReceivedListener()
使用 Expo react native (android) 收听 FCM 推送通知传递
Expo大作战(三十一)--expo sdk api之Payments(expo中的支付),翻译这篇文章傻逼了,完全不符合国内用户,我只负责翻译大家可以略过!