SpriteKitにSNSボタンを実装するのが地味に大変だったので、ちょっとこれについて書いてみます。
普通のシングルビューアプリケーションにSNSボタンを実装するのは簡単だったんですよ。ていうもの以前買った「iPhoneアプリ開発の教科書」にその方法が書いてあったからです。でもSpriteKitのことは書いてなかったので、手こずりました。
Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】 教科書シリーズ
- 作者: 森巧尚
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログを見る
今はSwift2.0に対応した最新版が出ているようですが、そっちにも書いてるかどうかは分かりません。
ただ、僕が買ったこれには書いてありました。TwitterとFacebookに投稿する方法が。
LINEのことは書いてなくて、これは自分で調べたので、ちょっとその辺も書いてみたいと思います。
(初めて実装したSNSボタンはこんな感じ。左からTwitter、ランキング、LINEです。これはパワハラ上司をどつき回せってアプリですね。)
まずは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は任意のテキストを入れておけないんですよ。
さっきで言う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ボタンの実装は、持ってる本には載ってなかったので、こちらのサイトを参考にしました。
コード自体は、サイトに書いてあるとおり、これで問題ないです。
@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」を選びます。
そしたらソースコードのところに、これを追記しましょう。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>line</string>
<string>scheme2</string>
</array>
こんな感じになりますね。
そうするとビックリ。
さっきはLSApplicationQueriesSchemesが表示されてなかったのに、出てるんですよ。
んで、そこに「line」があることを確認すればOKですね。
なければ自分で修正してください。
これでLINEボタンの実装が完了です。
【追記】シェアボタン
追記です、シェアボタンていうか、比較的なんでも出来るあのボタンの実装方法が分かったので、ご紹介します。
これこれ、こういうやつですね。なんて呼ぶのか分からないので、ここではシェアボタンと呼ばせていただきます。
これの実装方法は、この2つのサイトを参考にしました。
[Swift]UIActivityの使い方まとめ - Qiita
めっちゃ丸投げなんですが、見れば分かると思いますw
前者のサイトで基本的なことは全部分かるんですけど、presentViewControllerのところがエラーになったので、後者のサイトも参考にしました。
最後に
SpriteKitにおける、SNSボタンの実装はこんな感じです。
しかしいつもなにか新しいことをしようとすると、必ずエラーが出てくるんですよね。毎度これに挫けそうになりますよ。マジでw
以上、SpriteKit、SKSceneでSNSボタンを作り、TwitterやFacebookやLINEに投稿する方法(Swift)、の話でした。