安装

安装和初始化Marketo Mobile SDK ,以发送推送通知和/或应用程序内消息。

在iOS上安装Marketo SDK

先决条件

  1. 在Marketo管理员中添加应用程序并获取该应用程序的密钥和Munchkin ID。
  2. 可选: 设置推送通知

通过CocoaPods安装框架

  1. 安装CocoaPods。$ sudo gem install cocoapods
  2. 将目录更改为项目目录并创建具有智能默认值的Podfile。$ pod init
  3. 打开您的Podfile。$ open -a Xcode Podfile
  4. 将以下行添加到您的Podfile中。$ pod 'Marketo-iOS-SDK'
  5. 保存并关闭Podfile。
  6. 下载并安装Marketo iOS SDK。$ pod install
  7. 在Xcode中打开工作区。$ open App.xcworkspace

使用Swift Package Manager安装框架

  1. 在项目导航器中选择您的项目。 在“添加包依赖关系”下,选择“+”。

    添加依赖项

  2. https://github.com/Marketo/ios-sdk添加Marketo包。

    存储库URL

  3. 添加资源捆绑。 在项目导航器中找到MarketoFramework.XCframework并在查找器中将其打开。 拖动MKTResources.bundle以复制捆绑包资源。

设置Swift桥接标头

  1. 转到“文件”>“新建”>“文件”,然后选择“头文件”。

    选择“头文件”

  2. 将文件命名为“<ProjectName>-Bridging-Header”。

  3. 转到“项目”>“Target”>“构建阶段”>“Swift编译器”>“代码生成”。 将以下路径添加到目标桥接标头:

    $(PODS_ROOT)/<_ProjectName_>-Bridging-Header.h

    生成阶段

初始化SDK

使用您的Marketo帐户ID和应用程序密钥初始化Munchkin iOS SDK。 在Marketo管理员的“移动应用程序和设备”下找到这两个值。

  1. 打开Objective-C的AppDelegate.m文件或Swift的桥接文件。 导入Marketo.h头文件。

    code language-none
    #import <MarketoFramework/MarketoFramework.h>
    
  2. 将以下代码粘贴到application:didFinishLaunchingWithOptions:函数中。

    将“本机”作为本机应用程序的框架类型传递。

目标C
code language-objectivec
Marketo *sharedInstance = [Marketo sharedInstance];

[sharedInstance initializeWithMunchkinID:@"munchkinAccountId" appSecret:@"secretKey" mobileFrameworkType:@"native" launchOptions:launchOptions];
Swift
code language-swift
let sharedInstance: Marketo = Marketo.sharedInstance()

sharedInstance.initialize(withMunchkinID: "munchkinAccountId", appSecret: "secretKey", mobileFrameworkType: "native", launchOptions: launchOptions)
  1. munkinAccountIdsecretKey替换为Marketo Admin > Mobile Apps and Devices​中的“Munchkin帐户ID”和“密钥”。

iOS测试设备

  1. 选择项目>目标>信息> URL类型。
  2. 添加标识符${PRODUCT_NAME}。
  3. 将URL方案设置为mkto-<Secret Key_>
  4. 将应用程序sourceApplication添加到Objective-C的AppDelegate.m文件中。

在AppDelegate中处理自定义Url类型

目标C
code language-objectivec
- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{

    return [[Marketo sharedInstance] application:app
                                         openURL:url
                                         options:options];
}
Swift
code language-swift
private func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
    {
        return Marketo.sharedInstance().application(app, open: url, options: options)
    }

如何在Android上安装Marketo SDK

先决条件

  1. 在Marketo管理员中添加应用程序并获取该应用程序的密钥和Munchkin ID。
  2. 可选: 设置推送通知
  3. 下载适用于Android的Marketo SDK

使用Gradle设置Android SDK

  1. 在应用程序级别的build.gradle文件中,在依赖项部分下添加依赖项。

    implementation 'com.marketo:MarketoSDK:0.8.9'

  2. 将以下配置添加到根build.gradle文件。

    code language-none
    buildscript {
        repositories {
            google()
            mavenCentral()
        }
    
  3. 将项目与Gradle文件同步。

配置权限

打开AndroidManifest.xml并添加以下权限。 您的应用程序必须请求“INTERNET”和“ACCESS_NETWORK_STATE”权限。 如果应用程序已经请求这些请求,请跳过此步骤。

<uses‐permission android:name="android.permission.INTERNET"></uses‐permission>
<uses‐permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses‐permission>

初始化SDK

  1. 打开Application或Activity类。 在setContentView之前或在Application Context中将Marketo SDK导入活动。

    code language-java
    // Initialize Marketo
    Marketo marketoSdk = Marketo.getInstance(getApplicationContext());
    marketoSdk.initializeSDK("native","munchkinAccountId","secretKey");
    
  2. ProGuard配置(可选)

    如果您的应用程序使用ProGuard,请将以下行添加到项目文件夹中的proguard.cfg文件中。 此配置排除Marketo SDK进行模糊处理。

    code language-none
    -dontwarn com.marketo.*
    -dontnote com.marketo.*
    -keep class com.marketo.`{ *; }
    

Android测试设备

将“MarketoActivity”添加到应用程序标记中的AndroidManifest.xml

<activity android:name="com.marketo.MarketoActivity"  android:configChanges="orientation|screenSize" >
    <intent-filter android:label="MarketoActivity" >
        <action  android:name="android.intent.action.VIEW"/>
        <category  android:name="android.intent.category.DEFAULT"/>
        <category  android:name="android.intent.category.BROWSABLE"/>
        <data android:host="add_test_device" android:scheme="mkto" />
    </intent-filter>
</activity>

Firebase Cloud Messaging支持

MME SDK for Android支持直接使用Google的Firebase Cloud Messaging (FCM)。

将FCM添加到应用程序

  1. 将最新的Marketo Android SDK集成到Android应用程序。 查看GitHub上的步骤。

  2. 在Firebase控制台中配置Firebase应用程序。

    1. 🔗Firebase控制台上创建/添加项目。

      1. Firebase控制台中选择Add Project
      2. 从现有Google Cloud项目列表中选择您的GCM项目,然后选择Add Firebase
      3. 在Firebase欢迎屏幕中,选择Add Firebase to your Android App
      4. 提供您的包名称和SHA-1,然后选择Add App。 已下载Firebase应用程序的新google-services.json文件。
      5. 选择Continue,然后按照在Android Studio中添加Google Services插件的详细说明操作。
    2. 在项目概述中导航到“项目设置”

      1. 单击“常规”选项卡。 下载“google-services.json”文件。
      2. 单击“Cloud Messaging”选项卡。 复制“服务器密钥”和“发件人ID”。 向Marketo提供这些“服务器密钥”和“发件人ID”。
    3. 在Android应用程序中配置FCM。

      1. 切换到Android Studio中的“项目”视图,查看项目根目录

        1. 将下载的google-services.json文件移到Android应用程序模块的根目录中

        2. 在项目级别的build.gradle中,添加以下内容:

          code language-none
          buildscript {
            dependencies {
              classpath 'com.google.gms:google-services:4.0.0'
            }
          }
          
        3. 在应用程序级别的build.gradle中,添加以下内容:

          code language-none
          dependencies {
            compile 'com.google.firebase:firebase-core:17.4.0'
          }
          // Add to the bottom of the file
          apply plugin: 'com.google.gms.google-services'
          
        4. 最后,在ID中显示的栏中选择​Sync now

    4. 编辑应用程序清单。 FCM SDK会自动添加所需的权限和接收者功能。 删除以下过时元素,这些元素可能导致消息重复:

      code language-xml
      <uses-permission android:name="android.permission.WAKE_LOCK" />
      <permission android:name="<your-package-name>.permission.C2D_MESSAGE" android:protectionLevel="signature" />
      <uses-permission android:name="<your-package-name>.permission.C2D_MESSAGE" />
      
      ...
      
      <receiver>
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND"
        <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <category android:name="<your-package-name> />
        </intent-filter>
      </receiver>
      
recommendation-more-help
marketo-developer-help