gpt4 book ai didi

ios - Expo 独立 iOS 应用程序返回 'Undetermined' 权限但在其他任何地方都有效

转载 作者:行者123 更新时间:2023-11-29 13:56:20 34 4
gpt4 key购买 nike

我有一个 Expo 应用程序在 iOS 上没有获得权限。我关注expo guide , expo 生成了我的证书,基本上完全使用了 push notification docs 中的代码,允许在应用程序中推送通知,但 iOS 始终返回“未确定”权限。在我的手机上的 Expo 应用程序中运行我的应用程序可以运行,Android 可以运行,但不是实际的 iOS 应用程序。据我所知,app.json 中不需要任何关于通知的内容,对吧?

下面是注册函数,仅供引用:

export async function registerForPushNotificationsAsync() {
const { status: existingStatus } = await Permissions.getAsync(
Permissions.NOTIFICATIONS
);
let finalStatus = existingStatus;

if (existingStatus !== 'granted') {
const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
finalStatus = status;
}

// Status is always 'undetermined' on iOS standalone app.
if (finalStatus !== 'granted') {
return;
}

// Get the token that uniquely identifies this device
let token = await Notifications.getExpoPushTokenAsync();

// POST the token to your backend server from where you can retrieve it to send push notifications.
return fetch(settings.api_url + 'push-token', {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
push_token: token,
api_key: ui.user.api_key
}),
});
}

其他信息:

  • 世博会 SDK 32
  • iPhone XR

最佳答案

我知道这是一个老问题,但由于尚未得到解答,我将收集解决此问题的常用步骤。

如果您在通过 TestFlight 测试应用程序或从 App Store 实际安装时收到状态“未确定”,则您需要配置您的生产推送通知证书。我确定您还收到了一封电子邮件,其中包含有关 ITMS-90078:缺少推送通知权利 的内容。

你需要做两三件事...

首先,the things mentioned here :

In order to fix this, you need to enable "Push notifications" for your app on the app store.

  1. Login to https://developer.apple.com/
  2. Go to the "Certificates, Identifiers and Profiles" section
  3. Select "App IDs" in the Identifiers section on the left column
  4. Choose your app ID, edit it and check "Push Notifications". Save changes
  5. Generate a certificate for the production push service: go to the "Certificates" section, and follow the assistant to add a "Apple Push Notification service SSL (Sandbox & Production)" certificate for your app. Acute readers will notice that expo does not need this certificate since it uses a key to talk to Apple directly

TL;DR: Expo needs to enable the "Push Notification" service when creating the app in the Apple Developer Portal

其次,我确定您已经发布了应用,所以您需要做的是更改 app.json 文件中的 expo.ios.buildNumber然后像这样使用清晰的配置文件参数重建应用程序:

expo build:ios --clear-provisioning-profile

以这种方式,Expo 将使用现在在您的 App ID 标识符中激活的推送通知生成构建。

最后,从 Application Loader 再次上传。你应该没问题。

希望这对您有所帮助。

重要。如果仅清除配置文件不起作用,请尝试使用命令 expo build:ios -c清除所有/p>

关于ios - Expo 独立 iOS 应用程序返回 'Undetermined' 权限但在其他任何地方都有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55600147/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com