GameWith Developer Blog

GameWith のエンジニア、デザイナーが技術について日々発信していきます。

iOSアプリにSiri Shortcutsを実装して露出アップを狙ってみた #GameWith #TechWith

GameWithのiOSアプリエンジニアの chuymaster です!会社ではチャイと呼ばれています。インドのミルクティーのアレです。

今回はGameWithアプリに、Siri Shortcutsっていう機能を実装したので、その裏話を話したいと思います!

Siri Shortcutとは

Siri ShortcutsはiOS 12からできた機能で、Siriを通して音声でいろいろなアクションをさせることができる機能です。

実装がとても簡単で、Siriだけではなく、Spotlight検索からもアクションを出現させることができて、アプリの露出を増やすのに役に立つ機能です。

また、頻繁にアクションが行われると、検索するまでもなく、Spotlightを出したときやロックスクリーンにショートカットが出現するので、アプリの起動回数アップも狙えます。

Siri Shortcutsの最小実装方法

Siri Shortcuts用のこんなクラスを作りました。

class SiriShortcutsService {
    
    static func createActivity(activityType: String,
                               title: String,
                               keywords: Set<String> = [],
                               contentDescription: String = "",
                               suggestedInvocationPhrase: String = "") -> NSUserActivity {

        // NSUserActivityを作成して付帯情報を設定
        let activity = NSUserActivity(activityType: activityType)
        activity.title = title
        activity.keywords = keywords
        
        let searchItemAttributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
        searchItemAttributeSet.title = title
        searchItemAttributeSet.contentDescription = contentDescription
        activity.contentAttributeSet = searchItemAttributeSet
        
        // Spotlight検索とSiri Shortcutsを有効化
        activity.isEligibleForSearch = true
        if #available(iOS 12.0, *) {
            activity.isEligibleForPrediction = true
            activity.persistentIdentifier = activityType
            activity.suggestedInvocationPhrase = suggestedInvocationPhrase
        }
        return activity
    }
}

これで、Siriに登録するショートカットを作成できます。 ショートカットの付帯情報はコードから分かるように

  • title: タイトル
  • keywords: 検索キーワード
  • contentDescription: ショートカットの説明
  • suggestedInvocationPhrase: Siriで起動するフレーズの提案

が設定できます。

次にショートカットを ViewController で登録する必要があります。

    override func viewDidLoad() {
        super.viewDidLoad()
        
        userActivity = SiriShortcutsService.createActivity(activityType: "jp.co.gamewith.xxxxxx",
                                                           title: "モンストのマルチに参加",
                                                           keywords: ["モンスト", "マルチ", "モンスターストライク"],
                                                           contentDescription: "モンスターストライクのマルチ募集中のクエストに参加できます")
        userActivity?.becomeCurrent()
    }

ViewController が持っている userActivity プロパティにショートカットを設定し、 userActivity?.becomeCurrent() を呼ぶことでショートカットを登録します。これで登録完了です。

ここで登場した activityType パラメータは、ショートカットごとに一意の文字列を設定します。 Siri Shortcutsでアプリが起動された際のハンドリングするための認識記号として持ちます。

ハンドリング処理は、 AppDelegateapplication(_:continueUserActivity:restorationHandler:) でこのようにします。

func application(_ application: UIApplication,
                     continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([Any]?) -> Void) -> Bool {

        // activityTypeの文字列を取得
        switch userActivity.activityType {
        case "jp.co.gamewith.xxxxxx":
            
            // モンストのマルチ参加画面を開く
            Route.multiParticipate()
            return true
            
        default:
            return false
        }
    }

留意点

Siri Shortcutsはあくまでも、ユーザーがよく使っているアクションを登録して、簡単に呼び出せるようにする機能なので、 実際にそのアクションをしたときにショートカットを追加するのがAppleのガイドラインに沿って適切です。

Don’t make donations for actions that the user has not completed in your app; if the user never places an order for soup, you should never donate a shortcut for the order soup action.

Donating Shortcuts | Apple Developer Documentation

Siriへの登録方法

GameWithアプリのモンスト攻略にはマルチ掲示板機能があり、 そこでマルチ募集かマルチ参加をした方なら、Siri Shortcutsを使うことができます。

  • まずは設定を開く

  • Siriと検索を選ぶ

  • GameWithを選ぶ

  • ショートカットを選ぶ

  • 使えるショートカット一覧から、「モンストのマルチに参加」を選ぶ

  • Siriで起動するフレーズを登録する

  • 「マルチ参加」で登録したショートカットが表示される

  • Siriに「マルチ参加」と話しかける

  • GameWithアプリのモンストマルチ掲示板が起動する

  • Spotlightからもショートカットが出現するようになる

実装した結果

Siri Shortcutsをリリースして1週間経ったとき

ショートカットを経由してアプリを起動してくれたユーザーがなんと・・・

・・・

・・

40名弱いました!

Siri経由とSpotlight経由を含めた数字です。

アプリの利用者の数から考えると、とてつもなく少ないです。

あまり普及しないSiriを使う機能なので、利用者が少ないのは予想通りとはいえ、少し凹みました(笑)

しかし、GameWithが掲げるビジョン「世界のゲームインフラになる」を実現するには、 こうしたユーザー体験の改善を地道に積み上げることが必要であり、 今後も試行錯誤しながらサービスを作っていきたいと思います。

最後に

社内では、Siriのことをもっと勉強して、Intentsという機能でSiriと会話して何かできないかも検証しています。

Siri Shortcutsのように、新しい技術をエンジニアから積極的に提案して実装できるのも、GameWithの社風ならではです。

そんなGameWithは、ゲームが大好きで、新しい技術をどんどん使っていきたいという方を大募集中!

Wantedly でもよいので是非お気軽にお声がけください!

www.wantedly.com