appId 已设置,但请调用 setLaunchOptions(launchOptions) 完成 OneSignal 初始化!在电容器
Posted
技术标签:
【中文标题】appId 已设置,但请调用 setLaunchOptions(launchOptions) 完成 OneSignal 初始化!在电容器【英文标题】:appId set, but please call setLaunchOptions(launchOptions) to complete OneSignal init! in Capacitor 【发布时间】:2021-11-06 13:28:55 【问题描述】:我正在 Ionic 应用程序中开发推送通知,我的问题是我无法在 OneSignal 中看到用户并发送通知。我在 xCode 控制台中的唯一日志是:
appId set, but please call setLaunchOptions(launchOptions) to complete OneSignal init!
这是我的信息:
Ionic:
Ionic CLI : 5.4.16
Ionic Framework : @ionic/angular 5.7.0
@angular-devkit/build-angular : 12.0.5
@angular-devkit/schematics : 12.0.5
@angular/cli : 12.0.5
@ionic/angular-toolkit : 4.0.0
Capacitor:
Capacitor CLI : 3.1.1
@capacitor/core : 3.2.2
Cordova:
Cordova CLI : 6.2.0
Cordova Platforms : none
Cordova Plugins : no whitelisted plugins (1 plugins total)
Utility:
cordova-res : 0.15.3
native-run : 1.4.1
System:
ios-sim : ios-sim/9.0.0 darwin-x64 node-v12.18.4
NodeJS : v12.18.4 (/usr/local/bin/node)
npm : 6.14.8
OS : macOS Big Sur
Xcode : Xcode 12.5.1 Build version 12E507
在 android 中我遇到了同样的错误。
【问题讨论】:
看到同样的问题。 @JamesParker 我的建议是尝试降级 OneSignal 的版本。我试过了,效果很好。 您使用的是第 3 版电容器吗?在我更新到需要 iOS 12 的电容器 3 之前,我一直在运行一个信号的版本 3,没有任何问题。 【参考方案1】:此警告提供信息,不会影响插件功能。
您可以在插件所依赖的 OneSignal iOS 框架的 OneSignal.m
文件中找到生成此警告的代码。当appId
为set repeatedly 或设置appId
但launchOptions
object has not yet been initialized 时会发生这种情况。
如果你查看Plugin源文件和初始化函数,你会看到设置appId
后it does callsetLaunchOptions(launchOptions)
:
NSString* appIdStr = (appId ? [NSString stringWithUTF8String: appId] : nil);
[OneSignal setMSDKType:@"cordova"];
[OneSignal setAppId:appIdStr];
[OneSignal initWithLaunchOptions:launchOptions];
上面的代码在[OneSignal setAppId:appIdStr]
触发警告,但随后立即使用[OneSignal initWithLaunchOptions:launchOptions]
(这是setLaunchOptions(launchOptions)
Swift 接口底层的Objective-C 函数)解决它。
【讨论】:
以上是关于appId 已设置,但请调用 setLaunchOptions(launchOptions) 完成 OneSignal 初始化!在电容器的主要内容,如果未能解决你的问题,请参考以下文章