이미지와 함께 Twitter에 게시하고 싶은 Titanium에서.
15297 단어 Titanium
새해 복 많이 받으세요.
올해도 잘 부탁드립니다.
노래와 춤을 좋아하는 여러분의 게시물을 기대하고 있습니다.
하고 싶은 일
흥미로운 것
iOS의 경우
hntn씨의 기사 에서도 소개되고 있습니다만, TiSocial 모듈을 이용합니다.
이번에는 Share Extensions를 표시하지 않으므로 socialshare 모듈을 사용하지 않습니다.
var social = require('dk.napp.social');
var image = 'https://www.pakutaso.com/shared/img/thumb/BO15103026151030265020_TP_V.jpg',
url = 'http://qiita.com/',
text = 'TweetText';
if (!social.isTwitterSupported()) {
Ti.API.warn('Twitter account is not set.');
return;
}
social.twitter({
text: text,
image: image,
url: url
});
이것만.
매우 간단.
Android의 경우
먼저 인텐트를 만들고 활동을 시작해 봅니다.
var image = 'https://www.pakutaso.com/shared/img/thumb/BO15103026151030265020_TP_V.jpg',
url = 'http://qiita.com/',
text = 'TweetText';
var intent = Ti.Android.createIntent({
action: Ti.Android.ACTION_SEND,
packageName: 'com.twitter.android',
flags: Ti.Android.FLAG_ACTIVITY_NEW_TASK,
type: 'text/plain'
});
intent.putExtra(Ti.Android.EXTRA_TEXT, text + ' ' + url);
intent.putExtraUri(Ti.Android.EXTRA_STREAM, image);
try {
Ti.Android.currentActivity.startActivity(intent);
} catch(e) {
// GooglePlay
Ti.Platform.openURL('https://play.google.com/store/apps/details?id=com.twitter.android');
}
문제가 발생한 것 같습니다.
01-06 09:56:34.037: E/AndroidRuntime(17424): FATAL EXCEPTION: main
01-06 09:56:34.037: E/AndroidRuntime(17424): Process: com.twitter.android, PID: 17424
01-06 09:56:34.037: E/AndroidRuntime(17424): java.lang.IllegalStateException: Media does not exist
・・・
めめぃ あだず의 쫓아 버리면 이미지를 찾을 수 없습니까?
여러가지 구그라고 보았습니다만, 아무래도 Web상의 화상을 트윗시에 지정할 수 없는 것일지도 모릅니다. 어쩔 수 없으므로 일단 이미지 파일을 다운로드하여 지정하기로했습니다.
여기서의 주의점으로서, 이미지 파일을
Titanium.Filesystem.applicationDataDirectory
등에 저장하면 다른 앱으로부터 참조 불가가 되기 때문에, 이번은 임시 디렉토리( Ti.Filesystem.tempDirectory
)에 저장하고 있습니다.참고 : h tps : ///s p 헛후 아테 r. 코 m / b ぉ g / 치타 니 m 오 펜 pd f ぃ th 돈 텐 ts- 레소 l ゔ ぇ d 앤 d 로이 d /
var image = 'https://www.pakutaso.com/shared/img/thumb/BO15103026151030265020_TP_V.jpg',
url = 'http://qiita.com/',
text = 'TweetText';
var start = function(tmpImage) {
var intent = Ti.Android.createIntent({
action: Ti.Android.ACTION_SEND,
packageName: 'com.twitter.android',
flags: Ti.Android.FLAG_ACTIVITY_NEW_TASK,
type: 'text/plain'
});
intent.putExtra(Ti.Android.EXTRA_TEXT, text + ' ' + url);
intent.putExtraUri(Ti.Android.EXTRA_STREAM, tmpImage.getNativePath());
try {
Ti.Android.currentActivity.startActivity(intent);
} catch(e) {
// GooglePlay
Ti.Platform.openURL('https://play.google.com/store/apps/details?id=com.twitter.android');
}
};
var client = Titanium.Network.createHTTPClient();
client.setTimeout(10000);
client.onload = function(){
if (client.status == 200 ) {
var name = image.match('.+/(.+?)([\?#;].*)?$')[1],
tmpImage = Ti.Filesystem.getFile(Ti.Filesystem.tempDirectory, name);
tmpImage.write(this.responseData);
start(tmpImage);
} else {
Ti.API.info('error: image not found');
}
};
client.open('GET',image);
client.send();
어떻게 됐어요.
큰 일인데요, 여기까지 상당히 빠져 버렸습니다.
그 결과 iOS, Android에서 같은 내용의 게시물이 생겼습니다.
문제점
Gist
Reference
이 문제에 관하여(이미지와 함께 Twitter에 게시하고 싶은 Titanium에서.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kurom96/items/c8d0fe02396bb4d13e22텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)