読者です 読者をやめる 読者になる 読者になる

ホーリーのプログラミング日記

プログラミング初級者。歴1年。ポンコツアプリを量産しています。

SpriteKit、SKSceneでSNSボタンを作り、TwitterやFacebookやLINEに投稿する方法(Swift)

プログラミング入門

 

SpriteKitにSNSボタンを実装するのが地味に大変だったので、ちょっとこれについて書いてみます。

普通のシングルビューアプリケーションにSNSボタンを実装するのは簡単だったんですよ。ていうもの以前買った「iPhoneアプリ開発の教科書」にその方法が書いてあったからです。でもSpriteKitのことは書いてなかったので、手こずりました。

 

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】 教科書シリーズ

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】 教科書シリーズ

 

 

今はSwift2.0に対応した最新版が出ているようですが、そっちにも書いてるかどうかは分かりません。

ただ、僕が買ったこれには書いてありました。TwitterとFacebookに投稿する方法が。

 LINEのことは書いてなくて、これは自分で調べたので、ちょっとその辺も書いてみたいと思います。

 

f:id:gevvoihorry:20160406071154j:plain

(初めて実装したSNSボタンはこんな感じ。左からTwitter、ランキング、LINEです。これはパワハラ上司をどつき回せってアプリですね。)

 

Twitter

まずはTwitterから。

最初はこのサイトを参考にさせていただいたんですが、日本語が文字化けしちゃってダメでした。英語だけなら問題ないんですけどね。

[Swift] SpriteKit,SKScene上でSNS投稿画面を表示し、TwitterやFacebookへ投稿する方法 - Qiita

(今回の記事のタイトルは、これ思いっきりパクってますw)

 

それで色々と探した結果、たどり着いたのがここ。

BLOG-[Swift]SpriteKitからTwitterにツイート

あいにく画像を添付するところまでは出来なかったのですが、おかげさまでバッチリでした。

(先ほどのサイトの管理人さんはもちろん、お二方には感謝しております)

 

サイトを見ていただければコードが載ってるんですが、自分が

書いたのはこんな感じです。

 

まずはインポートソーシャルをしましょう。

 

import Social

 

んで、任意の場所にコードを書きます。

 

if (touchNode == twitterButton) {

    

    let twitterCmp : SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)

    

    twitterCmp.setInitialText("【パワハラ上司をどつき回せ】https://itunes.apple.com/jp/app/pawahara-shang-siwodotsuki/id1097198933?mt=8")

 

    twitterCmp.addImage(UIImage(named: "icon1024.jpg"))

    

    let currentViewController : UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController!

    

    currentViewController?.presentViewController(twitterCmp, animated: true, completion: nil)

}

 

僕の場合は、Twitterボタンを押したとき、その処理が走るようにしました。

twitterCmp.setInitialTextに続くところが、中身のテキストですね。初期設定しておけるところっていうか。

 

はい、Twitterはこんな感じです。

 

Facebook

ごめんなさい。先に謝っておきますが、Facebookのやり方を知りません。

だってFacebookは任意のテキストを入れておけないんですよ。

さっきで言うtwitterCmp.setInitialTextに続くところですね。ここがイジれないので、正直Facebookボタンを設けるメリットが分かりません。なので実装はしませんでした。

 

んで、コードなんですが、多分これでOKなんじゃないですかね。

 

if (touchNode == twitterButton) {

    

    let twitterCmp : SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)

    

    twitterCmp.setInitialText("【パワハラ上司をどつき回せ】https://itunes.apple.com/jp/app/pawahara-shang-siwodotsuki/id1097198933?mt=8")

    

    let currentViewController : UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController!

    

    currentViewController?.presentViewController(twitterCmp, animated: true, completion: nil)

}

 

赤い字のところを「Facebook」ってすれば、多分OKでしょう。多分w

 

LINE

LINEボタンの実装は、持ってる本には載ってなかったので、こちらのサイトを参考にしました。

LINEで送るをiOS9でやるには - Qiita

 

コード自体は、サイトに書いてあるとおり、これで問題ないです。

 

@IBAction func pushLine(sender: AnyObject) {

    let text: String! = "Message!!"

    let encodeMessage: String! = text.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

    let messageURL: NSURL! = NSURL( string: "line://msg/text/" + encodeMessage )        

    if (UIApplication.sharedApplication().canOpenURL(messageURL)) {

        UIApplication.sharedApplication().openURL( messageURL )

    }

}

 

これで相手に「Message!!」ってLINEが送れますよ。

 

んで、ここで大変だったのは、plistでLSApplicationQueriesSchemesを追加すること

 

だってあれですよ。

 

どこを探してもLSApplicationQueriesSchemesがないんですよ

 

info.plistの中にないんですよ。もう井上陽水ばりに探したけれど、見つからない。夢の中へ行こうかと思いましたが、そうはいかん、てことで必死に探しました。

 

その結果、実装方法が分かったので書いてみます。

最初からLSApplicationQueriesSchemesがあるって方は、それでOK。

ないって方向けの話です。ないと実際のボタンが反応しません。

 

☆☆☆

 

info.plistを右クリックして、「Open AS」からの「Source Code」を選びます。

 

f:id:gevvoihorry:20160406073440p:plain

 

そしたらソースコードのところに、これを追記しましょう。

 

<key>LSApplicationQueriesSchemes</key>

<array>

<string>line</string>

<string>scheme2</string>

</array>

 

こんな感じになりますね。

 

f:id:gevvoihorry:20160406073756p:plain

 

そうするとビックリ。

さっきはLSApplicationQueriesSchemesが表示されてなかったのに、出てるんですよ。

 

んで、そこに「line」があることを確認すればOKですね。

なければ自分で修正してください。

 

f:id:gevvoihorry:20160406074030p:plain

 

これでLINEボタンの実装が完了です。

 

【追記】シェアボタン

追記です、シェアボタンていうか、比較的なんでも出来るあのボタンの実装方法が分かったので、ご紹介します。

 

f:id:gevvoihorry:20160831073003j:plain

 

これこれ、こういうやつですね。なんて呼ぶのか分からないので、ここではシェアボタンと呼ばせていただきます。

 

これの実装方法は、この2つのサイトを参考にしました。

[Swift]UIActivityの使い方まとめ - Qiita

SwiftとSpriteKitでゲームアプリを作る

 

めっちゃ丸投げなんですが、見れば分かると思いますw

前者のサイトで基本的なことは全部分かるんですけど、presentViewControllerのところがエラーになったので、後者のサイトも参考にしました。

 

最後に

SpriteKitにおける、SNSボタンの実装はこんな感じです。

しかしいつもなにか新しいことをしようとすると、必ずエラーが出てくるんですよね。毎度これに挫けそうになりますよ。マジでw

以上、SpriteKit、SKSceneでSNSボタンを作り、TwitterやFacebookやLINEに投稿する方法(Swift)、の話でした。