带有Firebase消息传递和Firebase动态链接的Cordova Ionic项目

时间:2018-08-02 15:28:25

标签: ios cordova firebase firebase-cloud-messaging firebase-dynamic-links

在我们正在构建的应用中,我们需要Firebase动态链接,因为“注册”是通过Firebase电子邮件链接登录进行的。此登录名将发送一封电子邮件到所提供的电子邮件地址,单击该电子邮件将通过动态链接打开该应用程序。为了保持用户的参与度,我们还希望发送推送通知。当我在GitHub上使用 chemerisuk 的版本时,可以使它们在Android上一起工作。我什至得到了一个iOS版本,但是我却无法在iOS上获得令牌。收到此错误消息:

Failed to fetch default token Error Domain=com.firebase.iid Code=1003 "(null)"

我已经仔细检查了Firebase Project设置(捆绑ID,应用程序ID前缀,云消息发件人ID,云消息APN密钥)和Apple设置(证书,置备配置文件,密钥和标识符)。我已经在模拟器和真实设备上尝试过。我曾经尝试过开发版本,App Store存档和Ad Hoc存档。

不幸的是,Cordova Firebase插件未包含动态链接。当我尝试添加其他fcm插件时,它包含完整的Firebase Core,与动态链接冲突。

我觉得我真的很亲密,谁对这两种插件组合有任何经验并且可以在iOS上运行?

这是我的环境:

Ionic:

  ionic (Ionic CLI)  : 4.0.2 (/usr/local/lib/node_modules/ionic)
  Ionic Framework    : ionic-angular 3.9.2
  @ionic/app-scripts : 3.1.8

Cordova:

  cordova (Cordova CLI) : 8.0.0
  Cordova Platforms     : android 7.0.0, ios 4.5.5

System:

  Android SDK Tools : 26.1.1
  ios-deploy        : 1.9.2
  ios-sim           : 6.1.2
  NodeJS            : v8.11.3 (/usr/local/bin/node)
  npm               : 5.6.0
  OS                : macOS High Sierra
  Xcode             : Xcode 9.4.1 Build version 9F2000

Environment:

  ANDROID_HOME : /Users/user/Library/Android/sdk/

我的(相关的)科尔多瓦config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget android-packageName="com.example.android" android-versionCode="10001" id="com.example.app" ios-CFBundleIdentifier="com.example.ios" ios-CFBundleVersion="1.0.1" version="1.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Example</name>
    <description>Some description</description>
    <content src="index.html" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="BackgroundColor" value="0xff168aa5" />
    <preference name="android-minSdkVersion" value="16" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="300" />
    <preference name="Orientation" value="portrait" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />
    <platform name="android">
        <resource-file src="google-services.json" target="app/google-services.json" />
        <allow-intent href="market:*" />
        <icon />
        <splash />
    </platform>
    <platform name="ios">
        <resource-file src="GoogleService-Info.plist" />
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <icon />
        <splash />
    </platform>
    <plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
    <plugin name="cordova-plugin-device" spec="^2.0.2" />
    <plugin name="cordova-plugin-splashscreen" spec="^5.0.2" />
    <plugin name="cordova-plugin-ionic-webview" spec="^1.2.1" />
    <plugin name="cordova-plugin-ionic-keyboard" spec="^2.1.2" />
    <plugin name="cordova-plugin-x-socialsharing" spec="^5.4.1" />
    <plugin name="cordova-plugin-qrscanner" spec="^2.6.0" />
    <allow-navigation href="http://192.168.178.19:8101" />
    <plugin name="cordova-plugin-firebase-dynamiclinks" spec="^1.0.0">
        <variable name="APP_DOMAIN" value="example.com" />
        <variable name="PAGE_LINK_DOMAIN" value="ab123.app.goo.gl" />
        <variable name="FIREBASE_DYNAMIC_LINKS_VERSION" value="+" />
    </plugin>
    <plugin name="cordova-plugin-firebase-messaging" spec="^1.1.0">
        <variable name="FIREBASE_MESSAGING_VERSION" value="17.1.+" />
        <variable name="ANDROID_SUPPORT_VERSION" value="27.+" />
    </plugin>
    <engine name="android" spec="7.0.0" />
    <engine name="ios" spec="4.5.5" />
</widget>

1 个答案:

答案 0 :(得分:0)

因为我只使用了Firebase库的一部分,所以我没有包括Firebase Analytics,因为我没有使用它。显然,其余插件必须正常工作。因此,安装cordova-plugin-firebase-analytics是我的解决方法。

对于某些人来说,这是确保他们具有正确的Firebase项目设置。转到Firebase>云消息传递> iOS应用程序配置,并确保您已上传有效的APNs身份验证密钥或APNs证书。

希望这对希望同时使用Firebase消息传递和Firebase动态链接的其他人有所帮助!