安装

Marketo Mobile SDK的安装说明。 发送推送通知和/或应用程序内消息需要执行以下步骤。

在iOS上安装Marketo SDK

先决条件

  1. 在Marketo Admin中添加应用程序(获取应用程序密钥和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. 从此存储库添加Marketo包。 为此存储库添加此URL: https://github.com/Marketo/ios-sdk。

    存储库URL

  3. 现在添加资源包,如下所示:在项目导航器中找到MarketoFramework.XCframework并在Finder中将其打开。 拖放MKTResources.bundle以复制捆绑包资源。

设置Swift桥接标头

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

    选择“头文件”

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

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

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

    生成阶段

初始化SDK

在使用Marketo iOS SDK之前,您必须使用Munchkin帐户ID和应用程序密钥对其进行初始化。 您可以在Marketo管理区域的“移动设备应用程序和设备”下方找到每个应用程序或设备。

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

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

    请注意,我们必须将“本机”作为本机应用程序的框架类型传递。

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

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

sharedInstance.initialize(withMunchkinID: "munchkinAccountId", appSecret: "secretKey", mobileFrameworkType: "native", launchOptions: launchOptions)
  1. 使用可在Marketo Admin > Mobile Apps and Devices ​部分中找到的“Munchkin帐户ID”和“密钥”替换上述munkinAccountIdsecretKey

iOS测试设备

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

在AppDelegate中处理自定义Url类型

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

    return [[Marketo sharedInstance] application:app
                                         openURL:url
                                         options:options];
}
Swift
code language-none
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

先决条件

使用Gradle设置Android SDK

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

implementation 'com.marketo:MarketoSDK:0.8.9'

  1. build.gradle文件应具有

    code language-none
    buildscript {
        repositories {
            google()
            mavenCentral()
        }
    
  2. 将项目与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支持

适用于Android的MME软件开发工具包(SDK)已更新到一个更现代、稳定和可扩展的框架,其中包含更灵活的功能和面向Android应用程序开发人员的新工程功能。

Android应用程序开发人员现在可以直接将Google的Firebase Cloud Messaging (FCM)与此SDK一起使用。

将FCM添加到应用程序

  1. 在Android应用程序中集成最新的Marketo Android SDK。  步骤位于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中显示的栏中的“立即同步”

    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
bb269a6d-047a-4bf7-9acd-23ad9a63dc59